c语言写一个五子棋小游戏

 

部分效果图:

 

  1. 总体设计

 

这里我将叙述一个大概的设计过程。

玩家一使用的棋子是’*’ 玩家二以及电脑使用的棋子是’#’。这两个字符只是方便做相关操作。

实际显示时,我将玩家一显示为白棋子,玩家二显示为黑棋子。而不是直接把’*’和’#’显示给用户。

棋盘用的是二维数组。

一盘游戏几乎所有操作都是在这个二维数组上面实现。主要功能有:游戏背景音乐,实时棋盘的更新,棋子的移动,判断胜负,胜负播报音乐,电脑实现智能化落子。

本程序分为两大部分,一部分是人机对战,另一部分是人人对战。人人对战就不说了。人机对战让电脑实现了一定的智能化,主要算法是Ai()函数。

以下是各个功能函数的简要概述。

int isWin();//判定胜负

void Ai6();//电脑随机放子

void Ai5();//阻止玩家冲三

void Ai4();//电脑实现冲四

void Ai3();//阻止玩家冲四

void Ai2();//让电脑实现冲五

void Ai1();//阻止玩家冲五

void load();//初始界面

void printS();//打印棋盘

void newgame();//游戏主体

void gamer();//双人对战

void movedown(int *x,int *y,int ret);//向上

void moveup(int *x,int *y,int ret);//向下

void moveright(int *x,int *y,int ret);//向右

void moveleft(int *x,int *y,int ret);//向左

void move();//人机模式移动

void move1();//双人对战 玩家一

void move2(); //双人对战 玩家二

void end(int flag);//结束界面

2. 算法设计

 

主要算法函数:电脑智能下棋。

使用了函数嵌套,

优先级:

Ai1()        ->Ai2()         ->Ai3()        ->Ai4()        ->Ai5()        ->Ai6()

阻止玩家冲五->让电脑实现冲五->阻止玩家冲四->电脑实现冲四->阻止玩家冲三->随机放子

函数说明:

阻止玩家冲五:通过遍历棋盘(用两个for循环),得到玩家的棋子位置,判断它的棋子里面是否有连四的情况出现,如果有就进行防守。其它防守函数同理。电脑实现冲五则是通过遍历棋盘上自己的棋子,如果有连四的情况,那么就补上最后一个棋子完成胜局。其它进攻函数同理。

怎样实现优先级?通过函数嵌套,把Ai1()(阻止玩家冲五)作为第一个返回函数,如果能找到相应的位置(成功防守)那么就返回该位置,否则继续进行下一个判断也就是Ai2()(让自己实现冲五),以此类推。

 

void Ai6();//电脑随机放子

void Ai5();//阻止玩家冲三

void Ai4();//电脑实现冲四

void Ai3();//阻止玩家冲四

void Ai2();//让电脑实现冲五

void Ai1();//阻止玩家冲五

void Ai1()//阻止玩家冲五

 

评论 67
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值