さあC言語(DXライブラリ)を使って超繊細、美麗、箱庭シューティングゲームを作ってみましょう 超初心者向けです 0.367
自分の弾とは別に追加で自分の弾1 自分の弾2 自分の弾3 自分の弾4も発射したいのよん
自分の弾とは別に追加で自分の弾1 自分の弾2 自分の弾3 自分の弾4も発射したいのよん
続きです
ソーラー「Zボタンを押したら
自分の弾が発射され
発射された自分の弾が画面の外に出たとき
再び
Zボタンを押したら
自分の弾が発射されるようにすることができました
そのプログラムの
Characterの構造体宣言
struct Character {
int x;
int y;
int graphichandle;
};
//👆🌞Characterの構造体宣言です
を
struct Character {
int x;
int y;
int graphichandle;
int life;
};
//👆🌞Characterの構造体宣言です
に変更して
プログラムを再構成しました」
そのプログラムはこちらです
👇
#include "DxLib.h"
struct Character {
int x;
int y;
int graphichandle;
int life;
};
//👆🌞Characterの構造体宣言です
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
ChangeWindowMode(TRUE); // ウインドウモードに設定します
if (DxLib_Init() == -1) // DXライブラリを初期化処理しています
{
return -1; // DXライブラリの初期化に失敗したら直ちにプログラムを終了します
}
SetDrawScreen(DX_SCREEN_BACK);//👈🌞SetDrawScreen関数です
struct Character jibunnohikouki;
//👆🌞jibunnohikoukiの構造体変数宣言です
jibunnohikouki.x = 0;
jibunnohikouki.y = 0;
jibunnohikouki.graphichandle = LoadGraph("画像データ\\ソーラーが描いた飛行機.bmp");
//👆🌞構造体変数jibunnohikoukiのメンバ変数の初期化を行っています
struct Character jibunnotama;
//👆🌞jibunnotamaの構造体変数宣言です
jibunnotama.x = 0;
jibunnotama.y = 0;
jibunnotama.graphichandle = LoadGraph("画像データ\\自分の弾.bmp");
jibunnotama.life=0;//👈🌞🌞🌞ここに注目
//👆🌞構造体変数jibunnotamaのメンバ変数の初期化を行っています
while (CheckHitKey(KEY_INPUT_ESCAPE) == 0 && ProcessMessage() == 0) {
DrawBox(100, 100, 500, 300, GetColor(0, 255, 255), TRUE);
int key = GetJoypadInputState(DX_INPUT_KEY_PAD1);
if (key & PAD_INPUT_UP) jibunnohikouki.y = jibunnohikouki.y - 4;
if (key & PAD_INPUT_DOWN) jibunnohikouki.y = jibunnohikouki.y + 4;
if (key & PAD_INPUT_LEFT) jibunnohikouki.x = jibunnohikouki.x - 4;
if (key & PAD_INPUT_RIGHT) jibunnohikouki.x = jibunnohikouki.x + 4;
DrawGraph(jibunnohikouki.x, jibunnohikouki.y, jibunnohikouki.graphichandle, TRUE);
if (key & PAD_INPUT_A) {
if (jibunnotama.life == 0) {
jibunnotama.x = jibunnohikouki.x + 35;
jibunnotama.y = jibunnohikouki.y + 2;
jibunnotama.life = 1;
}
}
if (jibunnotama.life == 1) {
DrawGraph(jibunnotama.x, jibunnotama.y, jibunnotama.graphichandle, TRUE);
jibunnotama.x = jibunnotama.x + 10;
//👇この部分だけ付け加えました
if (jibunnotama.x > 640)
jibunnotama.life = 0;
//👆この部分だけ付け加えました
}
ScreenFlip();
ClearDrawScreen();
};
DxLib_End(); // DXライブラリの使用を終了します DXライブラリの使用しているメモリ領域が解放されます
return 0; // プログラムを終了します
}
デバッグなしで実行をしてから一度プログラムを終了し
生成されたexeファイルをハードディスクから探し出しクリックする方法により得られたプログラムの実行結果はこちらです
👇
https://www.youtube.com/watch?v=89FA9iLHTco
ソーラー「変数aをjibunnotama.lifeに置き換えても
プログラムの実行結果はかわらないね」
solarplexuss「ちょっと
飛行機が左端の方にいるとき
自分の弾の発射された後
次の自分の弾が
発射されるまで
時間がかかって
間延びしている気がするね」
マックス「
Zボタンを押したら
自分の弾が発射され
発射された自分の弾が画面の外に出たとき
再び
Zボタンを押したら
自分の弾が発射されるようになる仕組みだから
ゲーム画面の左端に飛行機がいると
自分の弾が発射されても
ゲーム画面の右端に
自分の弾がたどり着いて
自分の弾が画面の外に出るのに
時間がかかるから
当然
前に
自分の弾が発射されてから
次に
自分の弾が発射されるまでに
時間がかかる
ぽつっ
と
自分の弾が発射されてから
ぽつっ
と
再び
自分の弾が発射されるわけだ
趣きがあるじゃないか
なあ」
solarplexuss「ねえ
飛行機が左端にいても
もうちょっとこう
連続して弾が発射されないかな?」
マックス「さらに
プログラムにアップデートを加えようというのか?」
solarplexuss「えっとね
Zボタンを押したら
自分の弾が発射され
発射された自分の弾が画面の外に出たとき
再び
Zボタンを押したら
自分の弾が発射される
だから
飛行機が左端にいると
自分の弾が発射されてから
次に
自分の弾が発射されるまでに
時間がかかるんでしょう
そこは変更しなくてもいいと思うのよん」
マックス「えぃぃ
変更しなくていいんかーい
それだと
ゲーム画面の左端に飛行機がいると
自分の弾が発射されても
ゲーム画面の右端に
自分の弾がたどり着いて
自分の弾が画面の外に出るのに
時間がかかるから
当然
前に
自分の弾が発射されてから
次に
自分の弾が発射されるまでに
時間がかかる
結局
ぽつっ・・・
ぽつっ・・・
と
自分の弾がゲーム画面に表示されることになるんじゃないか?」
solarplexuss「げへへ
その通り
だけどいい方法をおもいついちゃったんだ」
マックス「いい方法?」
solarplexuss「
ゲーム画面の左端に飛行機がいると
自分の弾が発射されても
ゲーム画面の右端に
自分の弾がたどり着いて
自分の弾が画面の外に出るのに
時間がかかるから
当然
前に
自分の弾が発射されてから
次に
自分の弾が発射されるまでに
時間がかかるんだけど
それは
その自分の弾だけの話だけなんじゃない」
マックス「アイイーン?はいぃ?」
solarplexuss「
他に
その自分の弾
とは別の
自分の弾1
自分の弾2
自分の弾3
自分の弾4
を
用意しておいて
Zボタンを押したら
☺️とりあえず☺️
次々と時間を空けて
自分の弾
自分の弾1
自分の弾2
自分の弾3
自分の弾4
が
発射されるようにするんだ
自分の弾1
自分の弾2
自分の弾3
自分の弾4
がゲーム画面に表示されていても
自分の弾が画面の外に出ていたら
Zボタンを押したら
自分の弾
が発射されるようにするのじゃ
自分の弾3
自分の弾4
がゲーム画面に表示されていても
自分の弾
自分の弾1
自分の弾2
がゲーム画面の外に出ていたら
Zボタンを押したら
自分の弾
自分の弾1
自分の弾2
が発射されるようにするのじゃ
そうすれば
たしかに
ゲーム画面の左端に飛行機がいると
自分の弾が発射されても
ゲーム画面の右端に
自分の弾がたどり着いて
自分の弾が画面の外に出るのに
時間がかかるから
当然
前に
自分の弾が発射されてから
次に
自分の弾が発射されるまでに
時間がかかるんだけど
追加で
自分の弾1
自分の弾2
自分の弾3
自分の弾4
が発射されてゲーム画面に表示されているから
ゲーム画面は
寂しくな〜い
寂しくな〜い
自分の弾1
自分の弾2
自分の弾3
自分の弾4
が発射されても
ゲーム画面の右端に
自分の弾1
自分の弾2
自分の弾3
自分の弾4
がたどり着いて
自分の弾1
自分の弾2
自分の弾3
自分の弾4
が画面の外に出るのに
時間がかかるから
当然
前に
自分の弾1
自分の弾2
自分の弾3
自分の弾4
が発射されてから
次に
自分の弾1
自分の弾2
自分の弾3
自分の弾4
が発射されるまでに
時間がかかるんだけど
なんやかんやで
Zボタンを押しつづけていたら
自分の弾
が
また発射されることになるじゃな〜い
加えて
ゲーム画面の右端に
自分の弾1
自分の弾2
自分の弾3
自分の弾4
がたどり着いたら
また
自分の弾1
自分の弾2
自分の弾3
自分の弾4
が
発射されて
ゲーム画面に
自分の弾1
自分の弾2
自分の弾3
自分の弾4
が
表示されるから
ゲーム画面は
自分の弾だらけで
賑やかになるんじゃないかなあ」
マックス「おおん
すごいな
あっさりと
いいアイデアをおもいつくじゃないか?
あとは
このアイデアを
どうプログラムで表現するかだが・・・」
😊😋面白トピックのコーナーです😛😉
このように
とても素晴らしいけど
実現不可能っぽいアイデアが
おもいつかれることがあります
この実現不可能っぽいアイデアには
とてつもない価値があります
案外
実現不可能っぽいアイデアでも
形にしていくうちに
実現されて行く場合があります
ですが
それも
その実現不可能っぽいアイデアをおもいついたからこそ
実現できたのです
今 流行りの量子コンピューターも
もともとは
とても素晴らしいけど
実現不可能っぽいアイデア
だったのですが
今では製品化までされています
量子コンピュータを完成させるには
機械のエンジニアだけでなく
まったく関係がなさそうな
様々な分野の方の協力が必要となるのですが・・・
ソーラー「え 何の話だったっけ?」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます