时间:2021-05-20
本文实例为大家分享了C语言实现三子棋小游戏的具体代码,供大家参考,具体内容如下
设计思路
三子棋的C语言设计的思路:
1.设计一个界面:让玩家运行后即可以看到一个界面,而此时界面需要一个让玩家选择的语句,即可以选择玩游戏或者退出操作。界面设计需要swich语句的实现,退出游戏设计选项为0,即可以当选择退出游戏时直接退出while(循环),即结束游戏。
2.游戏实现:当玩家选择玩游戏时,调用启动游戏的函数,而在游戏中,应当有的内容有:
(1)游戏内的棋盘设计:三子棋应当是三行三列的一个棋盘,通过函数打印出来。
(2)玩家的移动:玩家输入相应的坐标然后将属于玩家的标记打印在棋盘上,且电脑不能在同一位置打印。
(3)电脑的移动:电脑应随即控制,即调用rand函数,使用time和时间随机。
(4)输赢的处理:这里需要给出判断输赢的条件:即任意一行或一列或对角线相同即为赢,通过标记的符号来判断玩家赢还是电脑赢,如果棋盘放满且仍未判断出输赢,则为平局。
(5)函数的调用处理:在函数调用时,每走一步,应打印出相对应的棋盘供玩家观看,定义一个头文件直接将所需函数的头文件以及所需要的定义的行列常量,函数声明放在里面,在代码中只需用COL和ROW表示即可,需要修改棋盘的时候,只需修改头文件中的define所定义的COL以及ROW。
代码实现:
首先是游戏的界面代码:直接用printf打印出来即可
void meun(){ printf("****************\n"); printf("*****0.Exit*****\n"); printf("*****1.Play*****\n"); printf("****************\n");}然后设计出三子棋的棋盘
void ShowBoard(char board[][COL], int row, int col){ for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { printf(" %c ",board[i][j]); if (j < col-1) { printf("|"); } } printf("\n"); if (i < row - 1) { for (int j = 0; j < col; j++) { printf("---"); if (j < col - 1) { printf("|"); } } printf("\n"); } }}玩家的移动实现,特别提到的是,实现时注意玩家输入的坐标与数组对应下标的关系:玩家输入的坐标对应的数组下标应该减一。
void PlayerMove(char board[][COL], int row, int col){ int x = 0; int y = 0; while (1) { printf("请输入你的坐标:\n"); scanf("%d%d",&x,&y); if (x >= 1 && x <= 3 && y >= 1 && y <= 3) { if (board[x - 1][y - 1] == ' ') { board[x - 1][y - 1] = 'X'; break; } } else { printf("坐标有误,请重新输入\n"); } }}电脑下棋的功能实现:(用time让rand函数变成随机值而不固定随机)
void ComputerMove(char board[][COL], int row, int col){ while (1) { srand((unsigned)time(NULL)); int x = rand() % ROW; int y = rand() % COL; if (board[x][y] == ' ') { board[x][y] = 'O'; break; } }}输赢的处理(代码与思路一致,有IsWin函数(判断输赢),IsFull(判断平局))
char IsWin(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]; } if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[0][i] != ' ') { return board[0][i]; } if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[0][0] != ' ') { return board[0][0]; } if (board[0][2] == board[1][1] && board[1][1] == board[2][0] && board[1][1] != ' ') { return board[0][2]; } if (IsFull(board, row, col) == 1) { return 'Q'; } } return ' ';}static int IsFull(char board[][COL], int row, int col){ for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { if (board[i][j] == ' ') { return 0; } } } return 1;}最后就是函数调用问题,设计一个函数game()来调用设计好的代码功能,进行游戏功能的实现
void game(){ char board[ROW][COL] = {0}; InitBoard(board, ROW, COL); ShowBoard(board, ROW, COL); int ret = 0; while (1) { PlayerMove(board, ROW, COL); ComputerMove(board, ROW, COL); ShowBoard(board, ROW, COL); ret = IsWin(board, ROW, COL); if (ret != ' ') { break; } } if (ret == 'X') { printf("玩家赢\n"); } if (ret == 'O') { printf("电脑赢\n"); } if (ret == 'Q') { printf("平局\n"); }}主函数作为入口,让玩家自由选择进入游戏或者退出
int main(){ int input = 0; do { meun(); printf("请选择是否进入游戏:"); scanf("%d",&input); switch (input) { case 1: game(); break; case 0: printf("退出游戏\n"); break; default: printf("选择有误,请重新输入\n"); break; } } while (input); return 0;}一些需要调用的库函数以及定义,函数声明放在自定义头文件中调用即可
#ifndef _GAME_H_#define _GAME_H_#include<stdio.h>#include<stdlib.h>#pragma once#define ROW 3#define COL 3void InitBoard(char board[][COL],int row,int cow);void ShowBoard(char board[][COL], int row, int col);void PlayerMove(char board[][COL], int row, int col);void ComputerMove(char board[][COL], int row, int col);char IsWin(char board[][COL], int row, int col);#endif运行结果
更多有趣的经典小游戏实现专题,分享给大家:
C++经典小游戏汇总
python经典小游戏汇总
python俄罗斯方块游戏集合
JavaScript经典游戏 玩不停
java经典小游戏汇总
javascript经典小游戏汇总
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例为大家分享了C语言三子棋小游戏的具体代码,供大家参考,具体内容如下一.介绍:运用C语言的数组等相关知识:实现一个简易的三子棋小游戏:三子棋小游戏的大概内
本文实例为大家分享了C语言实现简单三子棋游戏的具体代码,供大家参考,具体内容如下游戏介绍:使用C语言中二维数组和函数的基本知识实现一个三子棋游戏,这个游戏要实现
三子棋、五子棋之类的游戏,非常简单,对于初学者来说是一个不错的练手的小项目,以前用C语言写过三子棋游戏。最近在看C++,所以就想到在三子棋的基础上利用C++语言
在用C语言实现三子棋小游戏之前,我们应当了解三子棋的游戏规则:在九宫格棋盘上,哪一方三个棋子连成一线(一行或一列或对角线)即判定哪一方胜利。以下为源代码:1.首
一、问题描述用c语言实现三子棋。二、基本流程在写三子棋的代码之前,我们来看看实现这个游戏的逻辑:1.菜单界面选择开始或者退出游戏。2.创建棋盘并初始化。3.打印