1. 程式人生 > >【四聖龍神錄的程式設計教室】第16章、來製作洩矢大人的彈幕吧

【四聖龍神錄的程式設計教室】第16章、來製作洩矢大人的彈幕吧

原文地址:

因為之前已經做好了固定的模式,所以彈幕的新增就變的很容易了。

這次只要把彈幕函式進行改動就行了。

我們就用shot_bullet_H008來實現洩矢大人的彈幕吧。

【洩矢大人】這個彈幕是東方風神錄EX面的最後一個彈幕。 不太清楚的人看下面的視訊來確認一下吧。(對不起,原文給nico的地址我打不開,只好發b站的了)

很意外的是,EX面的最後一個彈幕是這麼簡單的實現的,這麼說的話東方廚們也許會不高興,

但我們還是來簡單的實現一個相似的彈幕來吧。

————————————————————————————————————————————————————————————————————————

---- shotH.cpp裡新增如下程式碼 ----


//崇符【洩矢大人】
void shot_bullet_H008(int n){
    int t=shot[n].cnt;
    int k;
    if(t>=0 && t<1200 && t%90==0){
        double angle=rang(PI);
        for(int j=0;j<2;j++){//在中途分裂成兩部分
            for(int i=0;i<60;i++){//每部分60個
                if(shot[n].flag!=2 && (k=shot_search(n))!=-1){
                    shot[n].bullet[k].knd    =8;//第八號子彈
                    shot[n].bullet[k].angle  =angle+PI2/60*i;//圓形 60個
                    shot[n].bullet[k].flag   =1;
                    shot[n].bullet[k].x      =enemy[shot[n].num].x;
                    shot[n].bullet[k].y      =enemy[shot[n].num].y;
                    shot[n].bullet[k].col    =4;//四號顏色
                    shot[n].bullet[k].cnt    =0;
                    shot[n].bullet[k].state  =j;//狀態。根據是0還是1來區分旋轉方向
                    shot[n].bullet[k].spd    =2;
                }
            }
        }
        se_flag[0]=1;//發射音效
    }
    for(int i=0;i<SHOT_BULLET_MAX;i++){//所有子彈
        if(shot[n].bullet[i].flag>0){//有註冊了的子彈的話
            int state=shot[n].bullet[i].state;
            int cnt=shot[n].bullet[i].cnt;
            if(30<cnt && cnt<120){//在 30 -120 的時間內
                shot[n].bullet[i].spd-=1.2/90.0;//速度減少 1.2/90
                shot[n].bullet[i].angle+=(PI/2)/90.0*(state?-1:1);//傾斜90度/90
            }
        }
    }
}

————————————————————————————————————————————————————————————————————————

子彈的編號在 bullet 資料夾裡可以找到和子彈編號一樣的圖片,來確認下。


(b8.png)

最左邊的是0號的話,顏色編號為1號的就是水珠的顏色,顏色就指定為1號吧。

這裡要傳0或者1給state引數,洩矢大人的彈幕在一個地方會發射2個子彈,

中途會變成2個軌道。

在那裡,你會看到,狀態為0的彈幕會往角度的正方向變化,狀態為1的彈幕相反。

shot[n].bullet[i].angle+=(PI/2)/90.0*(state?-1:1);

代入這裡。問號是條件運算子,不知道的去谷歌一下吧。

這樣做的話,兩種角度的彈幕就出來了。

/カウンタ 移動パターン 敵の種類 x座標 y座標 スピード 発射時間 弾幕種類 弾の色 體力 弾種類 待機時間 アイテム1 2 3 4 5 6
/cnt pattern knd x y sp bltime blknd col hp blknd2 wait item_n
60 9 0 200 150 0 60 8 1 100 0 1200 0 -1 -1 -1 -1 -1

執行結果

本人CSDN部落格目錄:

相關推薦

程式設計教室16製作大人

原文地址: 因為之前已經做好了固定的模式,所以彈幕的新增就變的很容易了。 這次只要把彈幕函式進行改動就行了。 我們就用shot_bullet_H008來實現洩矢大人的彈幕吧。 【洩矢大人】這個彈幕是東方風神錄EX面的最後一個彈幕。 不太清楚的人看下面的視訊來確認一下

程式設計教室14製作各種各樣的資料

原文地址: 那些麻煩的設定終於搞定了,那麼這次我們就來做各種各樣的彈幕資料吧。 下面是一直髮射自機狙的彈幕函式001. 往 shotatan2 函式裡,傳入n,就可以返回自機和編號為n的敵機的角度,這樣很簡單就把射向自機的角度傳給angle 變量了。 ————————

程式設計教室22放炸彈攻擊

原文地址: 這次講炸彈攻擊。 和往常一樣,準備好資訊儲存的地方,然後進行載入,然後讓他自動計算,大概就是這樣的感覺就行了。。。 在之前的章節裡,我們準備了變數來展現特效。 之前敵機消滅時,使用了特效。現在在同一個儲存區裡,載入炸彈的特效看看。 之前也說過了,這個特效變

程式設計教室17讓自機可以發射子彈

原文地址: 那麼,看起來已經有點像樣了呢。 把自機的射擊功能和碰撞檢測加上的話,大部分的架構就完成了。 自機的射擊實現方式也是和基本的敵機射擊的實現是差不多的。 製作一個儲存子彈資訊的結構,把種類,速度,角度等等儲存進去就行了。 這些數值設定好了之後,計算部分就可以輕鬆

程式設計教室0 開始

原文地址: 龍神錄的程式設計教室,是以通俗易懂的方式,來講解基本的射擊遊戲作為目標的地方。 如果把這裡的每個章節,都認真學習了之後,你就可以製作出像龍神錄這樣的射擊遊戲了。 如果對龍神錄還不熟悉,請點選這裡 四聖龍神錄,是使用了包含DirectX庫的DxLib庫來

程式設計教室19給敵機加上消滅特效

原文地址: 敵機就只是突然消失的話,感覺少了點什麼,我們來給他加上消滅的特效吧。 那麼首先,我們把特效需要用到的一個檔案新增進來。 在解決方案資源管理器裡,專案上點選右鍵,新增項, 選擇 mydat 資料夾的 source 裡的  effect.cpp 加入。 在裡面複

開源仿東方 射擊遊戲教程 官網(譯)以及國內參考翻譯資料

四聖龍神錄 官網地址 引用doujin 上的帖子的介紹 開源仿東方STG-四聖龍神錄,帶彈幕製作教程60講,使用C語言+DXLib 非常不錯的仿東方的STG,網站上面帶製作教程,可以用來參考。附帶60講教程詳細介紹怎樣修改他的彈幕STG工程製作彈幕。使用DxLib+

集體智慧程式設計發現群組

一、前言 本章中,我們將學習到如下內容:從各種不同的來源中構造演算法所需的資料;兩種不同的聚類演算法;更多有關距離度量(distance metrics)的知識;簡單的圖形視覺化程式碼,用以觀察所生成的群組;最後,我們還會學習如何將異常複雜的資料集投影到二維空間中。 聚類

程式設計珠璣 節省空間

一,概述        1)節省空間帶來的好處              程式變小使得載入更快;更容易讀入快取記憶體;需要操作的資料減少從而減少操作時間。        2)節省空間的方法               數學函式式替代要儲存的資料。簡單例子為:a[i]=i

算法導論堆排序

兩個 高度 位置 思想 n) 隊列 sigma 復雜 max 基本過程: 1、保持最大堆的性質:假設兩個子堆都滿足,只需要根節點依次換下去,復雜度O(lg n) 2、初始化堆:後半段都是葉子,在前半段從後往前,依次執行上述最大堆性質的操作,名義復雜度是O(n lg n),

算法導論快速排序

很好 補充 第七章 而是 合並 art 元素 一個 排序 快排的優勢: 1、期望為O(n lgn) 2、常數因子比較小 3、就地排序 4、在虛存環境很好工作 與合並排序一樣是分治思想,但是不是從中間截斷,而是通過partition過程實現的 每次選擇最後一個元素為q,然

安富萊二代示波器教程4 示波器設計—主界面布局和框架

font 實現 總結 代碼 波形 進入 新版 坐標 forum 第4章 示波器設計—主界面布局和框架 本章簡單為大家說明主界面的布局和框架。 4.1 主界面框架選擇 4.2 主界面布局 4.3 總結 4.1 主界面框架選擇 em

校招面試 之 劍指offer16題 數值的整數次方

iostream 面試 直接 lse cpp sin 校招 ack 整數次方 方法1:直接求解,但是要註意特殊情況的處理:即當指數為負,且底數為0的情況。 #include<iostream> using namespace std; template<

.NET Core專案實戰-統一認證平臺 閘道器篇-自定義客戶端限流

原文: 【.NET Core專案實戰-統一認證平臺】第七章 閘道器篇-自定義客戶端限流 【.NET Core專案實戰-統一認證平臺】開篇及目錄索引 上篇文章我介紹瞭如何在閘道器上增加自定義客戶端授權功能,從設計到編碼實現,一步一步詳細講解,相信大家也掌握了自定義中介軟體的開發技巧了,本篇我們將介紹如

.NET Core專案實戰-統一認證平臺 閘道器篇-資料庫儲存配置(1)

原文: 【.NET Core專案實戰-統一認證平臺】第三章 閘道器篇-資料庫儲存配置(1) 【.NET Core專案實戰-統一認證平臺】開篇及目錄索引 本篇將介紹如何擴充套件Ocelot中介軟體實現自定義閘道器,並使用2種不同資料庫來演示Ocelot配置資訊儲存和動態更新功能,內容也是從實際設計出發

.NET Core專案實戰-統一認證平臺 閘道器篇-自定義快取Redis

原文: 【.NET Core專案實戰-統一認證平臺】第五章 閘道器篇-自定義快取Redis 【.NET Core專案實戰-統一認證平臺】開篇及目錄索引 上篇文章我們介紹了2種閘道器配置資訊更新的方法和擴充套件Mysql儲存,本篇我們將介紹如何使用Redis來實現閘道器的所有快取功能,用到的文件及原始

.NET Core專案實戰-統一認證平臺 閘道器篇-自定義客戶端授權

原文: 【.NET Core專案實戰-統一認證平臺】第六章 閘道器篇-自定義客戶端授權 【.NET Core專案實戰-統一認證平臺】開篇及目錄索引 上篇文章我們介紹了閘道器使用Redis進行快取,並介紹瞭如何進行快取實現,快取資訊清理介面的使用。本篇我們將介紹如何實現閘道器自定義客戶端授權,實現可以

.NET Core專案實戰-統一認證平臺 授權篇-IdentityServer4原始碼分析

原文: 【.NET Core專案實戰-統一認證平臺】第八章 授權篇-IdentityServer4原始碼分析 【.NET Core專案實戰-統一認證平臺】開篇及目錄索引 上篇文章我介紹瞭如何在閘道器上實現客戶端自定義限流功能,基本完成了關於閘道器的一些自定義擴充套件需求,後面幾篇將介紹基於Ident

.NET Core專案實戰-統一認證平臺 授權篇-使用Dapper持久化IdentityServer4

【.NET Core專案實戰-統一認證平臺】開篇及目錄索引 上篇文章介紹了IdentityServer4的原始碼分析的內容,讓我們知道了IdentityServer4的一些執行原理,這篇將介紹如何使用dapper來持久化Identityserver4,讓我們對IdentityServer4理解更透徹,

Django REST framework電商專案筆記05 商品列表頁功能開發(下)

drf中的request和response drf 對 Django 的 request 和 response 進行了封裝 瀏覽器請求的 request 會被 drf 封裝擴充套件為標準的 http request 在基本的 httpRequest 上擴充套件,