C言語プログラミングエントリーゲーム「ThreeMenChess」

C言語の初期段階を体系的に研究した後、私は基本的なC言語についてある程度の理解と知識を持ち、C言語プログラミングを通じていくつかの簡単な問題を解決することができます。今回は簡単なゲーム「スリーメンチェス」をクリアしてください。

ゲームの紹介:2人のゲームプレーヤーがいる一般的な3x3ボード。このバージョンで達成される効果は、人間とコンピューターの戦いです。チェスを1つずつプレイすることで、片側が3文字の連射を形成している場合、ボード全体が勝つと判断されます。カバレッジがいっぱいで、3文字の結紮が形成されていない場合は、同点と判断されます。

コーディングのアイデア:チェスボードは3x3アレイによって実装されます。異なるプレーヤーは異なるキャラクターに対応します。チェスピースが位置に配置されるたびに、その位置への割り当てに対応します。

このコーディングでは、対応する機能をそれぞれ実行する合計5つの機能であるC言語を使用します。

void Menu()//ゲーム全体とインターフェースの計画を完了しました
void Game()//ゲームのアイデア全体を統合するゲームのフレームワーク
void playermove()//プレーヤーがチェスピースを配置するcharjudge()//
かどうかを判断する片方が勝つか、
void computerMove()//コンピューターがピース
をコーディングに配置します。コンピューターピースの配置は、ランダムな整数を生成することによって行われます。生成後、位置を配置できるかどうかが決定されます。そうでない場合は、ランダムな番号が再度生成されます。

C言語プログラミングエントリーゲーム「ThreeMenChess」

#include<stdio.h>  

#pragma warning(disable:4996);

#include"C:\Users\尽欢\source\repos\ConsoleApplication2\game.h"

int main()
{
int select = 0;
while (1) {
Menu();
scanf("%d", &select);
switch (select)
{
case 1:
Game();
break;
case 2:
system("exit");
break;
default:
printf("输入有误!\n");
break;
}
return 0;
}
}

#ifndef __GAME_H__
#define __GAME_H__

#include <stdio.h>
#include <time.h>
#include <windows.h>
#pragma warning(disable:4996)

#define ROW 3
#define COL 3

#define P_COLOR 'X'
#define C_COLOR 'O'
#define NEXT 'N'
#define DRAW 'D'

void Menu();
void Game();
#endif
#include"game.h"
void Menu()
{
printf("   三子棋    ");
printf("-------------------");
printf("|  1.开始游戏  |");
printf("|  2.退出游戏  |");
printf("-------------------");
printf("请选择");
}

void Game()
{
srand((unsigned long)time(NULL));
char board[ROW][COL];
memset(board, ' ', sizeof(board));
char reselt = 'x';
do {
ShowBoard(board, ROW, COL);
PlayerMove(board, ROW, COL);
result = Judge(board, ROW, COL);
if (result != NEXT) {
break;
}
ComputerMove(board, ROW, COL);
result = Judge(board, ROW, COL);
if (result != NEXT) {
break;
}
} while (1);

if (P_COLOR == result) {
printf("你赢了!\n");
}
else if (C_COLOR == result) {
printf("你输了!\n");
}
else {
printf("和棋!\n");

}
ShowBoard(board, ROW, COL);
}

}

void playermove(char board[][COL], int row, int col)
{
int x = 0;
int y = 0;
int quit = 0;
while (1) {
printf("请输入你的位置:");
scanf("%d %d", x, y);
if (x < 1 || x>3 || y < 1 || y>3)
{
printf("你输入的位置有误!\n");
continue;
}
else if (board[x - 1][y - 1] != ' ')
{
printf("该位置已经被占用\n");
}
else
{
board[x - 1][y - 1] = P_COLOR;
break;
}
}
}

char Judge(char board[][COL], int ROW, int col)
{
for (int i = 0;i < row;i++) {
if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][0] != ' ')
return board[i][0];
}
for (int j = 0; j < col; j++) {
if (board[0][j] == board[1][j] && \
board[1][j] == board[2][j] && \
board[0][j] != ' ') {
return board[0][j];
}
}

if (board[0][0] == board[1][1] && \
board[1][1] == board[2][2] && \
board[0][0] != ' ') {
return board[1][1];
}

if (board[0][2] == board[1][1] && \
board[1][1] == board[2][0] && \
board[1][1] != ' ') {
return board[1][1];
}

for (int i = 0; i < row; i++) {
for (int j = 0; j < col; j++) {
if (board[i][j] == ' ') {
return NEXT;
}
}
}

return DRAW;
}

void ComputerMove(char board[][COL], int row, int rol)
{
while (1)
{
int x = rand() % row;
int y = rand() % col;
if (board[x][y] == ' ')
{
board[x][y] = C_COLOR;
break;
}
}
}

おすすめ

転載: blog.51cto.com/14955626/2554456