ミニゲーム

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ghj

ミニゲーム

#1

投稿記事 by ghj » 8年前

ちょっとしたミニゲームを作っているのですが、分からないところがあります。
制限時間を60秒にして0秒になるとタイムアップでライフを1減らす
棘*に当たった場合もライフを1減らす。ライフが0になるとゲームオーバー。 (初期ライフは5です)
コインをすべて取ってДにたどり着くと画面消去して次ステージのマップへ。
次のステージのマップです↓
int map[11][10] = {
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 3, 0, 0, 1, 0, 3, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 1, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 2, 0, 0, 2, 0, 0, 1 },
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }
};

コード:

#include <windows.h> 
#include <stdio.h> 
#include <conio.h>
int locate(short x, short y)
{
COORD cd = { x * 2, y };
return SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), cd);
}

void draw(void);
void judge(void);
void input(void);
void move(void);

int map[11][10] = {
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 3, 0, 0, 1, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 1, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 2, 0, 0, 1 },
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 }
};

int x = 1;
int y = 8;
int jump = 0;
int coin = 0;
int end = 0;
long time = 0;

int main(void){

for (int i = 0; i<10; i++){
for (int j = 0; j<11; j++){
if (map[j][i] == 3){
coin++;
}
}
}//コインの枚数チェック 
locate(4, 13); printf("coin = %d", coin);
draw();

while (true){
time += 1;
if (_kbhit()){
map[y][x] = 0;
locate(x, y); printf(" ");

input();

judge();

map[y][x] = 9;
locate(x, y); printf("●");
}

if (time % 500 == 0){
map[y][x] = 0;

move();
}

if (end == 1){
return 0;
}

locate(4, 14); printf("time = %d", time / 2500);
}
}

void draw(void){

for (int i = 0; i<10; i++){
for (int j = 0; j<11; j++){

locate(i, j);

switch (map[j][i]){

case 1:
printf("■");
break;
case 2:
printf("*");
break;
case 3:
printf("◎");
break;
case 4:
printf("Д");
break;
default:
printf(" ");
break;
}
}
printf("\n");
}
locate(2, 16); printf("●を動かしてcoin◎を全て取りましょう。");
locate(2, 17); printf("全て取るとゴールДが現れます。");
locate(2, 18); printf("棘*に当たるとライフが一減ります。");
}

void judge(void){
switch (map[y][x]){

case 2:
printf("game over!");
_getch();
end = 1;
break;

case 3:
coin--;
locate(4, 13); printf("coin = %d ", coin);
if (coin == 0){
map[1][7] = 4;
locate(4, 13); printf("ok! ", coin);
draw();
}
break;

case 4:
printf("clear! next stage");
_getch();
end = 1;
break;

case 5:
printf("残機が1減りました");
_getch();
end = 1;
break;
}
}

void input(void){

switch (_getch()){

case 77:
if (map[y][x + 1] != 1){ x++; }
break;

case 75:
if (map[y][x - 1] != 1){ x--; }
break;

case 72:
if (map[y + 1][x] == 1){ jump = 4; }
break;

case 27:
end = 1;
break;
}
}

void move(void){
//重力 
if (map[y + 1][x] != 1 && jump == 0){
locate(x, y); printf(" ");

y++;

judge();

locate(x, y); printf("●\n");
}
//ジャンプ 
if (jump != 0){
locate(x, y); printf(" ");

if (map[y - 1][x] != 1){
y--;
jump--;
}
else{ jump = 0; }

judge();

locate(x, y); printf("●");
}
}


アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: ミニゲーム

#2

投稿記事 by みけCAT » 8年前

インデントが全くない、見にくいソースコードですね。
ghj さんが書きました:ちょっとしたミニゲームを作っているのですが、分からないところがあります。
それは辛いですね。でも分かると気持ちよくなるかもしれませんよ。
質問はありますか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

ghj

Re: ミニゲーム

#3

投稿記事 by ghj » 8年前

ヒントでできたらソースを教えてくれたらありがたいです

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: ミニゲーム

#4

投稿記事 by softya(ソフト屋) » 8年前

ghjさん = rsdさん = puewさんですね。
前のトピックを放置しないようにお願いします。

それと元のコードが有る場合著作権の問題もありますので必ず引用元を書いてください。
「[mixi]壁マリオ - C言語とC++言語 | mixiコミュニティ」
http://mixi.jp/view_bbs.pl?comm_id=2880&id=53594827
現状、元のコードをほぼそのままだと思われますので、
> ヒントでできたらソースを教えてくれたらありがたいです
どちらかと言うと製作依頼=丸投げになりますので掲示板のルール上はお受けできません。

同じことを繰り返されていますが、puewさんが質問の姿勢を変えないかぎり回答がつくことは難しいと思います。
オフトピック
ベタベタにWindowsAPI依存のコードになりました。
C言語の標準ライブラリと言う縛りは完全に捨ててますね。
最初に言ってたのと話が全く違います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

“C言語何でも質問掲示板” へ戻る