C/C++押し箱ミニゲームを実現
本論文の例では、C/C++プッシュボックスの具体的なコードを共有します。参考にしてください。具体的な内容は以下の通りです。
効果のデモンストレーション
実装機能
上の図に示すように。ボタンを押して子豚の動きをコントロールし、箱を押して目的地に行きます。
どうやって実現しますか
1.まず箱、子豚などの情報を保存することを考えて、複数のmapを追加して3次元配列を使うことができます。
2.子豚、箱、壁、空き地などの情報を三次元配列に定義する数値。
空き地 0
壁 1
目的地 2
箱 3
豚 4 2+4=6豚が目的地に到着すると豚が表示されます。
箱が目的地に着く 2+3=5
3.ボタンを押して箱を押す運動を実現します。
複数の状況を考慮する:
①子豚の運動(空き地、目的は)
②.子豚が箱を押す運動(空き地、目的地)
三次元配列でmap情報を保存します。ここでは二種類の図を作っただけです。自分で追加できます。
コードブロック
効果のデモンストレーション
実装機能
上の図に示すように。ボタンを押して子豚の動きをコントロールし、箱を押して目的地に行きます。
どうやって実現しますか
1.まず箱、子豚などの情報を保存することを考えて、複数のmapを追加して3次元配列を使うことができます。
2.子豚、箱、壁、空き地などの情報を三次元配列に定義する数値。
空き地 0
壁 1
目的地 2
箱 3
豚 4 2+4=6豚が目的地に到着すると豚が表示されます。
箱が目的地に着く 2+3=5
3.ボタンを押して箱を押す運動を実現します。
複数の状況を考慮する:
①子豚の運動(空き地、目的は)
②.子豚が箱を押す運動(空き地、目的地)
三次元配列でmap情報を保存します。ここでは二種類の図を作っただけです。自分で追加できます。
int backgrand[MAP][ROW][COL] =//map
{
{
1, 1, 1, 1, 1, 1, 1, 1,
1, 0, 0, 0, 2, 0, 0, 1,
1, 1, 0, 0, 3, 1, 1, 1,
1, 2, 3, 0, 4, 0, 0, 1,
1, 0, 1, 0, 3, 3, 2, 1,
1, 1, 0, 3, 2, 0, 0, 1,
1, 0, 0, 2, 0, 0, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1
},
{
0, 1, 1, 1, 1, 1, 1, 1,
1, 1, 0, 2, 0, 0, 0, 1,
1, 1, 0, 0, 3, 0, 1, 1,
1, 2, 3, 0, 4, 0, 0, 1,
1, 0, 1, 0, 0, 0, 1, 1,
1, 1, 0, 3, 2, 3, 0, 1,
1, 0, 0, 0, 0, 2, 0, 1,
1, 1, 1, 1, 1, 1, 1, 1
},
};
絵はeasyxライブラリを使っています。画像をロードして、絵を描くウィンドウは三つの文だけです。簡単です。
initgraph();//
loadimage();//
putinmage();//
コードを確認してください。コードブロック
#include<stdio.h>
#include<Windows.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
#include<graphics.h>
#define ROW 8
#define COL 8
#define MAP 2//map
int count = 0;// map
/*
0
1
2
3
4 2+4=6
2+3=5
*/
IMAGE image1, image2, image3, image4, image5, image6;
int backgrand[MAP][ROW][COL] =//map
{
{
1, 1, 1, 1, 1, 1, 1, 1,
1, 0, 0, 0, 2, 0, 0, 1,
1, 1, 0, 0, 3, 1, 1, 1,
1, 2, 3, 0, 4, 0, 0, 1,
1, 0, 1, 0, 3, 3, 2, 1,
1, 1, 0, 3, 2, 0, 0, 1,
1, 0, 0, 2, 0, 0, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1
},
{
0, 1, 1, 1, 1, 1, 1, 1,
1, 1, 0, 2, 0, 0, 0, 1,
1, 1, 0, 0, 3, 0, 1, 1,
1, 2, 3, 0, 4, 0, 0, 1,
1, 0, 1, 0, 0, 0, 1, 1,
1, 1, 0, 3, 2, 3, 0, 1,
1, 0, 0, 0, 0, 2, 0, 1,
1, 1, 1, 1, 1, 1, 1, 1
},
};
int Judge(){//p
int i = 0;
for (i = 0; i < ROW; i++){
int j = 0;
for (j = 0; j < COL; j++){
if (backgrand[count][i][j] == 3 || backgrand[count][i][j] == 2){//
return 0;
}
}
}
return 1;
}
void Backgrand(){//
int i = 0;
for (; i < ROW; i++){
int j = 0;
for (; j < COL; j++){
int x = 80 * j;// y( ), x( )。
int y = 80 * i;
switch (backgrand[count][i][j]){
case 0:
putimage(x, y, &image3);
break;
case 1:
putimage(x, y, &image1);
break;
case 2:
putimage(x, y, &image6);
break;
case 3:
putimage(x, y, &image4);
break;
case 4:
case 6:
putimage(x, y, &image2);
break;
case 5:
putimage(x, y, &image5);
break;
default:
break;
}
}
}
}
void Keymove(){//
int i = 0;
int j = 0;//j , for
for (i = 0; i < ROW; i++){ //
for (j = 0; j < COL; j++){
if (backgrand[count][i][j] == 4 || backgrand[count][i][j] == 6){
break;
}
}
if (backgrand[count][i][j] == 4 || backgrand[count][i][j] == 6){
break;
}
}
char key = _getch();//
switch (key){
case 'w':
case 'W':
case 72:
if (backgrand[count][i - 1][j] == 0 ||\
backgrand[count][i - 1][j] == 2)
{
backgrand[count][i][j] = backgrand[count][i][j] - 4;// ,
backgrand[count][i - 1][j] = backgrand[count][i - 1][j] + 4;
}
if (backgrand[count][i - 1][j] == 3 && (backgrand[count][i - 2][j] == 0 || \
backgrand[count][i - 2][j] == 2)) // , 。
{ //
backgrand[count][i][j] = backgrand[count][i][j] - 4;
backgrand[count][i - 1][j] = backgrand[count][i - 1][j] + 4;
backgrand[count][i - 1][j] -= 3;
backgrand[count][i - 2][j] += 3;
}
if (backgrand[count][i - 1][j] == 5 &&\
backgrand[count][i - 2][j] == 0) // ,
{
backgrand[count][i][j] -= 4;
backgrand[count][i - 1][j] += 4;
backgrand[count][i - 1][j] -= 3;
backgrand[count][i - 2][j] += 3;
}
break;
case 's':
case 'S':
case 80:
if (backgrand[count][i + 1][j] == 0 || \
backgrand[count][i + 1][j] == 2)
{ //
backgrand[count][i][j] = backgrand[count][i][j] - 4;
backgrand[count][i + 1][j] = backgrand[count][i + 1][j] + 4;
}
if (backgrand[count][i + 1][j] == 3 && (backgrand[count][i + 2][j] == 0 ||\
backgrand[count][i + 2][j] == 2))
{
backgrand[count][i][j] = backgrand[count][i][j] - 4;
backgrand[count][i + 1][j] = backgrand[count][i + 1][j] + 4;
backgrand[count][i + 1][j] -= 3;
backgrand[count][i + 2][j] += 3;
}
if (backgrand[count][i + 1][j] == 5 && \
backgrand[count][i + 2][j] == 0)
{
backgrand[count][i][j] -= 4;
backgrand[count][i + 1][j] += 4;
backgrand[count][i + 1][j] -= 3;
backgrand[count][i + 2][j] += 3;
}
break;
case 'a':
case 'A':
case 75:
if (backgrand[count][i][j - 1] == 0 || \
backgrand[count][i][j - 1] == 2)
{ //
backgrand[count][i][j] = backgrand[count][i][j] - 4;
backgrand[count][i][j - 1] = backgrand[count][i][j - 1] + 4;
}
if (backgrand[count][i][j - 1] == 3 &&\
(backgrand[count][i][j - 2] == 0 ||\
backgrand[count][i][j - 2] == 2))
{
backgrand[count][i][j] = backgrand[count][i][j] - 4;
backgrand[count][i][j - 1] = backgrand[count][i][j - 1] + 4;
backgrand[count][i][j - 1] -= 3;
backgrand[count][i][j - 2] += 3;
}
if (backgrand[count][i][j - 1] == 5 && \
backgrand[count][i][j - 2] == 0)
{
backgrand[count][i][j] -= 4;
backgrand[count][i][j - 1] += 4;
backgrand[count][i][j - 1] -= 3;
backgrand[count][i][j - 2] += 3;
}
break;
case 'd':
case 'D':
case 77:
if (backgrand[count][i][j + 1] == 0 || \
backgrand[count][i][j + 1] == 2)
{ //
backgrand[count][i][j] = backgrand[count][i][j] - 4;
backgrand[count][i][j + 1] = backgrand[count][i][j + 1] + 4;
}
if (backgrand[count][i][j + 1] == 3 && (backgrand[count][i][j + 2] == 0 ||\
backgrand[count][i][j + 2] == 2))
{
backgrand[count][i][j] -= 4;
backgrand[count][i][j + 1] += 4;
backgrand[count][i][j + 1] -= 3;
backgrand[count][i][j + 2] += 3;
}
if (backgrand[count][i][j + 1] == 5 && backgrand[count][i][j + 2] == 0){
backgrand[count][i][j] -= 4;
backgrand[count][i][j + 1] += 4;
backgrand[count][i][j + 1] -= 3;
backgrand[count][i][j + 2] += 3;
}
break;
default:
break;
}
}
void Initgraph(){
initgraph(80 * ROW, 80 * COL);
loadimage(&image1, "1.jpg");//
loadimage(&image2, "2.jpg");//
loadimage(&image3, "3.jpg");//
loadimage(&image4, "4.jpg");//
loadimage(&image6, "6.jpg");//
loadimage(&image5, "5.jpg");//
}
int main(){
Initgraph();
while (1){
Backgrand();
Keymove();
if (Judge()){
Backgrand();
Sleep(500);
count++;
}
if (count == MAP){
break;
}
}
getchar();
closegraph();
system("pause");
return 0;
}
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。