特攻隊

RPGツクール、パズル、プログラミング等々。

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
改行が反映されるやり方がわからないので、このまま載せます^^;
最初の2行(#includeがある行)だけ改行すれば、多分コンパイルできます。
Cで作った○×ゲームです。一応、完全オリジナル。(処女作)
色々酷いところアリ。鼻で笑ってくれると嬉しい。

操作方法はキー

q w e
a s d
z x c

(キーボードの左端3列)を押すと、対応するマスに○か×が打てます。


次こそテトリスだなー。。

(12/25追記)関数turnchange()を削除し、main関数に文:turn = 1 - turn;を追加。

↓以下、ソースコード



#include <conio.h>
#include <stdio.h>

/* グローバル変数 */
int gameover;/* 1ならば終了 */
int board[3][3];/* フィールド描画用 */
int turn;/* 0ならば○の番 1ならば×の番 */
int count;/* 9になったらゲーム終了 */

/* 関数プロトタイプ宣言 */
void initialize(void);
void createboard(void);
void pushbutton(void);
void check(void);


int main(void)
{
initialize();
while(!gameover) {
pushbutton();
count++;
turn = 1 - turn;
createboard();
check();
}
return 0;
}

void initialize()
{
int i, j;/* forループ用変数 */

count = 0;
for (i = 0; i < 3; i++) {
for (j = 0; j < 3; j++) {
board[i][j] = 10;

}
}
createboard();

}

void createboard()
{
int i, j;/* forループ用変数 */

system("cls");
if(!turn)
printf("○の番です\n\n");
else
printf("×の番です\n\n");
for (i = 0; i < 3; i++) {
for(j = 0; j < 3; j++) {
switch(board[i][j]) {
case 10:
printf("□");
break;
case 0:
printf("○");
break;
case 1:
printf("×");
}
}
printf("\n");
}
}

void pushbutton()
{
int i, j;
int endcheck = 0;/* キー入力成功なら1 */

do {
switch(getch()) {
case 'q':
i = 0;
j = 0;
break;
case 'w':
i = 0;
j = 1;
break;
case 'e':
i = 0;
j = 2;
break;
case 'a':
i = 1;
j = 0;
break;
case 's':
i = 1;
j = 1;
break;
case 'd':
i = 1;
j = 2;
break;
case 'z':
i = 2;
j = 0;
break;
case 'x':
i = 2;
j = 1;
break;
case 'c':
i = 2;
j = 2;
break;
default:
i = -1;
}
if(i != -1) {
if(board[i][j] == 10) {
board[i][j] = turn;
endcheck = 1;
}
}
} while (!endcheck);
}

void check()
{
if ((board[0][0] == 0 && board[0][1] == 0 && board[0][2] == 0)
||
(board[1][0] == 0 && board[1][1] == 0 && board[1][2] == 0)
||
(board[2][0] == 0 && board[2][1] == 0 && board[2][2] == 0)
||
(board[0][0] == 0 && board[1][0] == 0 && board[2][0] == 0)
||
(board[0][1] == 0 && board[1][1] == 0 && board[2][1] == 0)
||
(board[0][2] == 0 && board[1][2] == 0 && board[2][2] == 0)
||
(board[0][0] == 0 && board[1][1] == 0 && board[2][2] == 0)
||
(board[0][2] == 0 && board[1][1] == 0 && board[2][0] == 0)) {
printf("\n\n\n\n\n○の勝ち\n\n");
gameover = 1;
}
else
if ((board[0][0] == 1 && board[0][1] == 1 && board[0][2] == 1)
||
(board[1][0] == 1 && board[1][1] == 1 && board[1][2] == 1)
||
(board[2][0] == 1 && board[2][1] == 1 && board[2][2] == 1)
||
(board[0][0] == 1 && board[1][0] == 1 && board[2][0] == 1)
||
(board[0][1] == 1 && board[1][1] == 1 && board[2][1] == 1)
||
(board[0][2] == 1 && board[1][2] == 1 && board[2][2] == 1)
||
(board[0][0] == 1 && board[1][1] == 1 && board[2][2] == 1)
||
(board[0][2] == 1 && board[1][1] == 1 && board[2][0] == 1)) {
printf("\n\n\n\n\n×の勝ち\n\n");
gameover = 1;
}
else if(count == 9) {
printf("\n\n\n\n\n引き分け\n\n");
gameover = 1;
}
}
スポンサーサイト
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。