C言語関係掲示板

過去ログ

No.1012 地雷原

[戻る] [ホームページ]
No.1231

地雷原
投稿者---美樹(2004/02/04 00:30:49)


こんにちわ。はじめまして。私はC言語を始めて3か月になりますが、今回、地雷原突破ゲームを作成せよという課題が出ました。どのようプログラムを組んだら良いのかわかりません(ソース)。教えてください。お願いいたします。
たくさんのご意見ありがとうございます。

画面情報・・・10x10のフィールドを表示
       プレーヤー、ゴールを表示

地雷について・・・二次元配列(10x10)を利用し、1列につき1つ         地雷を配置
         プレー中地雷を表示させない。
         ゲーム終了時に地雷をすべて表示。
プレーヤーについて・・・上下左右に1コマずつ入力により移動できる
ゲーム終了条件・・・ゴールにたどり着く。
          プレーヤーが地雷位地までたどり着く。
となっております。
本当に助けてください。宜しくお願いいたします。


実行画面

@・・・・・・・・・
・・・・・・・・・・
・・・・・・・・・・
・・・・・・・・・・
・・・・・・・・・・
・・・・・・・・・・
・・・・・・・・・・
・・・・・・・・・・
・・・・・・・・・・
・・・・・・・・・G
移動方向を入力(8:上 2:下 4:左 6:右)
移動方向=

@・・・・・・・・・
・・・・・*・・・・
・・・・・・・・*・
・・*・・・・・・・
・・・・・・*・・・
・・・・・・・・*・
・*・・・・・・・・
・・・*・・・・・・
・・・・・・*・・・
・・・・・・・・・G
地雷を踏んだ画面
移動方向を入力(8:上 2:下 4:左 6:右)
移動方向=
地雷を踏みました。ゲームオーバー

と表示されるようにします。

No.1234

Re:地雷原
投稿者---かずま(2004/02/04 03:08:58)


#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int a[10][10],r,c;void p(int f){int i,j;for(i=0;i-10;i++){for(j=0;j-10;j++)
printf(i==r&&j==c?"@":i==9&&j==9?"G":f&&a[i][j]?"*":"・");puts("");}}int
main(void){int i,j,n;srand(time(0));for(i=1;i-9;i++)a[i][rand()%10]=1;for(p(0);
;){printf("移動方向を入力(8:上 2:下 4:左 6:右)\n移動方向=");scanf("%d",
&n)-1&&scanf("%*[^\n]",n=0);switch(n){case 8:r&&--r;p(0);break;case 2:r-9&&++r;
p(0);break;case 4:c&&--c;p(0);break;case 6:c-9&&++c;p(0);}if(r==9&&c==9){puts(
"ゴールイン!");break;}if(a[r][c]){puts("地雷を踏んだ!");break;}}p(1);return 0;}