#5
by あたっしゅ » 2年前
東上☆海美☆「
7/31 締め切りの ”仕事” の息抜きに、アクセスしているみみ。
> ビルドができた、とおっしゃっていましたが、直ったということでしょうか、それともただVS2022でビルドが実行できたという意味でしょうか、
プロジェクトがダウンロード出来て、ビルドできた、という意味みみ。プロジェクトのダウンロードができない/うまくいっていないから、レスが付かないわけではない、ということを貴方に知らせる意味の書き込みみみ。
自分は、質問主の為にレスしているわけではないみみ。自分のスキルを維持するためにレスしているみみ。だから、「課題なので締め切りに間に合うようにレスしてくれ」とかの事情は、まったく考慮しないみみ。だから、課題の締め切りが過ぎてしまったと思われるものにも、レスするみみ。
コード:
//
//
//
//
//
#define WORLD_WIDTH 640
#define WORLD_HEIGHT 480
#define Tama 500
#define TEKI_MAX 5
#include "DxLib.h"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
int i;
int j;
int PienX, PienY, PienGraph;
int PienTamaGraph, PienTamaX[Tama], PienTamaY[Tama], PienTamaFlag[Tama];
int Teki1X[TEKI_MAX], Teki1Y[TEKI_MAX], Teki1Flag[TEKI_MAX], Teki1Graph;
int titlebackground, gamebackground, titlefont, titlemojifont;
int sht_sound;
ChangeWindowMode(true);
SetGraphMode(WORLD_WIDTH, WORLD_HEIGHT, 64);
DxLib_Init();
SetDrawScreen(DX_SCREEN_BACK);
SetDrawMode(DX_DRAWMODE_BILINEAR);
SetWindowText("生姜");
for (i = 0; i < Tama; i++)
{
PienTamaFlag[i] = 0;
}
for (j = 0; j < TEKI_MAX; j++)
{
Teki1Flag[j] = 0;
}
titlebackground = LoadGraph("Game.title.jpg");
gamebackground = LoadGraph("title2.jpg");
PienGraph = LoadGraph("sprite.png");
PienX = 320; PienY = 400;
PienTamaGraph = LoadGraph("sht.jikishot.png");
Teki1Graph = LoadGraph("killerT.png");
titlefont = CreateFontToHandle("けいふぉんと", 50, 9, DX_FONTTYPE_ANTIALIASING_EDGE);
titlemojifont = CreateFontToHandle("07やさしさゴシック手書き", 20, 5, DX_FONTTYPE_ANTIALIASING_EDGE);
sht_sound = LoadSoundMem("sht.c.z.mp3");
enum {
TITLE,
GAME,
END,
}status=TITLE;
while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0)
{
ClearDrawScreen();
switch (status)
{
case TITLE:
DrawGraph(0, 0, titlebackground, 0);
if (CheckHitKey(KEY_INPUT_Z)) {
status = GAME;
PlaySoundMem(sht_sound, DX_PLAYTYPE_BACK);
}
break;
case GAME:
DrawGraph(0, 0, gamebackground, 0);
break;
case END:
break;
}
if (status == TITLE)
{
DrawStringToHandle(70, 200, "シューティングゲーム", GetColor(255, 255, 255), titlefont);
DrawStringToHandle(30, 420, "Zでゲーム開始", GetColor(255, 255, 255), titlemojifont);
DrawStringToHandle(30, 450, "ESCでゲーム終了", GetColor(255, 255, 255), titlemojifont);
}
if (status == GAME)
{
DrawGraph(PienX, PienY, PienGraph, true);
if (CheckHitKey(KEY_INPUT_W))PienY -= 3;
if (CheckHitKey(KEY_INPUT_A))PienX -= 3;
if (CheckHitKey(KEY_INPUT_S))PienY += 3;
if (CheckHitKey(KEY_INPUT_D))PienX += 3;
if (CheckHitKey(KEY_INPUT_SPACE) == 1)
{
i = -1;
for (int p = 0; p < Tama; p++) // 配列を走査し
{
if (PienTamaFlag[p] != 1) // 空いている場所を見つけたら
{
i = p; // その添字をiに設定
break;
}
}
if (i >= 0)
{
int Pw, Ph, Tw, Th;
GetGraphSize(PienGraph, &Pw, &Ph);
GetGraphSize(PienTamaGraph, &Tw, &Th);
// 弾iの位置をセット、位置はボール君の中心にする
PienTamaX[i] = (Pw - Tw) / 2 + PienX;
PienTamaY[i] = (Ph - Th) / 2 + PienY;
PienTamaFlag[i] = 1;
}
for (i = 0; i < Tama; i++)
{
// 自機の弾iの移動ルーチン( 存在状態を保持している変数の内容が1(存在する)の場合のみ行う )
if (PienTamaFlag[i] == 1)
{
// 弾iを16ドット上に移動させる
PienTamaY[i] -= 20;
// 画面外に出てしまった場合は存在状態を保持している変数に0(存在しない)を代入する
if (PienTamaY[i] < -80)
{
PienTamaFlag[i] = 0;
}
// 画面に弾iを描画する
DrawGraph(PienTamaX[i] + 10, PienTamaY[i] - 30, PienTamaGraph, true);
DrawGraph(PienTamaX[i] - 10, PienTamaY[i] - 30, PienTamaGraph, true);
}
}
}
if (Teki1Flag[j] <= 5)
{
j = -1;
for (int t = 0; t < TEKI_MAX; t++) // 配列を走査し
{
if (PienTamaFlag[t] != 1) // 空いている場所を見つけたら
{
j = t; // その添字をiに設定
int TekiPattern = GetRand(640);
Teki1X[j] = TekiPattern;
Teki1Y[j] += 3;
DrawGraph(Teki1X[j], Teki1Y[j], Teki1Graph, true);
break;
}
}
//int TekiPattern = GetRand(640);
//Teki1X[j] = TekiPattern;
//Teki1Y[j] += 3;
//DrawGraph(Teki1X[j], Teki1Y[j], Teki1Graph, true);
}
if (PienX > 640 - 64) PienX = 640 - 64;
if (PienX <= 0) PienX = 0;
if (PienY > 480 - 64) PienY = 480 - 64;
if (PienY <= 0) PienY = 0;
ScreenFlip();
}
}
DxLib_End();
return 0;
}
// end.
配列を走査し、空いている場所が見つからなかった時( J==-1 の時)にも、Teki1Y[ j ] へアクセスしにいっていたので、そこを修正したものみみ。注釈を書いたのが本人であれば、こんなプログラムを書かない、と思うみみ。コピペしただけなんですかみみ ?
"けいふぉんと" とか "07やさしさゴシック手書き" というフォントは持っていないので、自分の環境で動くようにするのは、7/31 締め切りの ”仕事” が終わった 8/1 以降になるみみ。
」
東上☆海美☆「
7/31 締め切りの ”仕事” の息抜きに、アクセスしているみみ。
> ビルドができた、とおっしゃっていましたが、直ったということでしょうか、それともただVS2022でビルドが実行できたという意味でしょうか、
プロジェクトがダウンロード出来て、ビルドできた、という意味みみ。プロジェクトのダウンロードができない/うまくいっていないから、レスが付かないわけではない、ということを貴方に知らせる意味の書き込みみみ。
自分は、質問主の為にレスしているわけではないみみ。自分のスキルを維持するためにレスしているみみ。だから、「課題なので締め切りに間に合うようにレスしてくれ」とかの事情は、まったく考慮しないみみ。だから、課題の締め切りが過ぎてしまったと思われるものにも、レスするみみ。
[code]
//
//
//
//
//
#define WORLD_WIDTH 640
#define WORLD_HEIGHT 480
#define Tama 500
#define TEKI_MAX 5
#include "DxLib.h"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
int i;
int j;
int PienX, PienY, PienGraph;
int PienTamaGraph, PienTamaX[Tama], PienTamaY[Tama], PienTamaFlag[Tama];
int Teki1X[TEKI_MAX], Teki1Y[TEKI_MAX], Teki1Flag[TEKI_MAX], Teki1Graph;
int titlebackground, gamebackground, titlefont, titlemojifont;
int sht_sound;
ChangeWindowMode(true);
SetGraphMode(WORLD_WIDTH, WORLD_HEIGHT, 64);
DxLib_Init();
SetDrawScreen(DX_SCREEN_BACK);
SetDrawMode(DX_DRAWMODE_BILINEAR);
SetWindowText("生姜");
for (i = 0; i < Tama; i++)
{
PienTamaFlag[i] = 0;
}
for (j = 0; j < TEKI_MAX; j++)
{
Teki1Flag[j] = 0;
}
titlebackground = LoadGraph("Game.title.jpg");
gamebackground = LoadGraph("title2.jpg");
PienGraph = LoadGraph("sprite.png");
PienX = 320; PienY = 400;
PienTamaGraph = LoadGraph("sht.jikishot.png");
Teki1Graph = LoadGraph("killerT.png");
titlefont = CreateFontToHandle("けいふぉんと", 50, 9, DX_FONTTYPE_ANTIALIASING_EDGE);
titlemojifont = CreateFontToHandle("07やさしさゴシック手書き", 20, 5, DX_FONTTYPE_ANTIALIASING_EDGE);
sht_sound = LoadSoundMem("sht.c.z.mp3");
enum {
TITLE,
GAME,
END,
}status=TITLE;
while (ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0)
{
ClearDrawScreen();
switch (status)
{
case TITLE:
DrawGraph(0, 0, titlebackground, 0);
if (CheckHitKey(KEY_INPUT_Z)) {
status = GAME;
PlaySoundMem(sht_sound, DX_PLAYTYPE_BACK);
}
break;
case GAME:
DrawGraph(0, 0, gamebackground, 0);
break;
case END:
break;
}
if (status == TITLE)
{
DrawStringToHandle(70, 200, "シューティングゲーム", GetColor(255, 255, 255), titlefont);
DrawStringToHandle(30, 420, "Zでゲーム開始", GetColor(255, 255, 255), titlemojifont);
DrawStringToHandle(30, 450, "ESCでゲーム終了", GetColor(255, 255, 255), titlemojifont);
}
if (status == GAME)
{
DrawGraph(PienX, PienY, PienGraph, true);
if (CheckHitKey(KEY_INPUT_W))PienY -= 3;
if (CheckHitKey(KEY_INPUT_A))PienX -= 3;
if (CheckHitKey(KEY_INPUT_S))PienY += 3;
if (CheckHitKey(KEY_INPUT_D))PienX += 3;
if (CheckHitKey(KEY_INPUT_SPACE) == 1)
{
i = -1;
for (int p = 0; p < Tama; p++) // 配列を走査し
{
if (PienTamaFlag[p] != 1) // 空いている場所を見つけたら
{
i = p; // その添字をiに設定
break;
}
}
if (i >= 0)
{
int Pw, Ph, Tw, Th;
GetGraphSize(PienGraph, &Pw, &Ph);
GetGraphSize(PienTamaGraph, &Tw, &Th);
// 弾iの位置をセット、位置はボール君の中心にする
PienTamaX[i] = (Pw - Tw) / 2 + PienX;
PienTamaY[i] = (Ph - Th) / 2 + PienY;
PienTamaFlag[i] = 1;
}
for (i = 0; i < Tama; i++)
{
// 自機の弾iの移動ルーチン( 存在状態を保持している変数の内容が1(存在する)の場合のみ行う )
if (PienTamaFlag[i] == 1)
{
// 弾iを16ドット上に移動させる
PienTamaY[i] -= 20;
// 画面外に出てしまった場合は存在状態を保持している変数に0(存在しない)を代入する
if (PienTamaY[i] < -80)
{
PienTamaFlag[i] = 0;
}
// 画面に弾iを描画する
DrawGraph(PienTamaX[i] + 10, PienTamaY[i] - 30, PienTamaGraph, true);
DrawGraph(PienTamaX[i] - 10, PienTamaY[i] - 30, PienTamaGraph, true);
}
}
}
if (Teki1Flag[j] <= 5)
{
j = -1;
for (int t = 0; t < TEKI_MAX; t++) // 配列を走査し
{
if (PienTamaFlag[t] != 1) // 空いている場所を見つけたら
{
j = t; // その添字をiに設定
int TekiPattern = GetRand(640);
Teki1X[j] = TekiPattern;
Teki1Y[j] += 3;
DrawGraph(Teki1X[j], Teki1Y[j], Teki1Graph, true);
break;
}
}
//int TekiPattern = GetRand(640);
//Teki1X[j] = TekiPattern;
//Teki1Y[j] += 3;
//DrawGraph(Teki1X[j], Teki1Y[j], Teki1Graph, true);
}
if (PienX > 640 - 64) PienX = 640 - 64;
if (PienX <= 0) PienX = 0;
if (PienY > 480 - 64) PienY = 480 - 64;
if (PienY <= 0) PienY = 0;
ScreenFlip();
}
}
DxLib_End();
return 0;
}
// end.
[/code]
配列を走査し、空いている場所が見つからなかった時( J==-1 の時)にも、Teki1Y[ j ] へアクセスしにいっていたので、そこを修正したものみみ。注釈を書いたのが本人であれば、こんなプログラムを書かない、と思うみみ。コピペしただけなんですかみみ ?
"けいふぉんと" とか "07やさしさゴシック手書き" というフォントは持っていないので、自分の環境で動くようにするのは、7/31 締め切りの ”仕事” が終わった 8/1 以降になるみみ。
」