写五子棋程序,这个是对迷宫的加深,以下是五子棋的分解过程:
五子棋:
分析数据:
char board[15][15]; 棋盘
char key_x,key_y; 接收棋子的坐标。
char role; 记录角色'@','#'。
业务逻辑:
1、初始化棋盘,所有位置赋值为'*';
while(true)
{
2、清理屏幕,显示棋盘。
3、请输入棋盘的坐标
检查坐标是否合法、是否已经有棋子。
4、检查是否形成五子
break;
5、切换角色
}
#include<stdio.h>
#include<stdlib.h>
int ppp(char x,char y);
char board[15][15]={0};
char key_x=0,key_y=0;
char role='@';
int p=0;
int main()
{
for(int i=0;i<15;i++)
{
for(int j=0;j<15;j++)
{
board[i][j]='*';
}
}
while(1)
{
system("clear");
for(int i=0;i<15;i++)
{
for(int j=0;j<15;j++)
{
printf("%c",board[i][j]);
}
printf("\n");
}
printf("请输入你要下的棋子的坐标");
scanf("%d %d",&key_x,&key_y);
if (board[key_x][key_y]=='@' || board[key_x][key_y]=='#') continue;
if (role=='@') {
board[key_x][key_y]='@';
p=ppp(key_x,key_y);
if (1==p) break;
role='#';
continue;
}
else {
board[key_x][key_y]='#';
p=ppp(key_x,key_y);
if (1==p) break;
role='@';
continue;
}
}
if ('#'==role) printf("后手胜利!");
else printf("先手胜利!");
}
int ppp(char m,char n)
{
// char x=a[m][n];
int c=1,d=1;
while(1)
{
if (board[m-d][n-d]==role ) {
c++;
d++;
}
else break;
}
d=1;
while(1)
{
if (board[m+d][n+d]==role) {
c++;
d++;
}
else break;
}
if (c>=5) return 1;
c=1;
d=1;
while(1)
{
if(board[m][n-d]==role) {
c++;
d++;
}
else break;
}
d=1;
while(1)
{
if (board[m][n+d]==role) {
c++;
d++;
}
else break;
}
if (c>=5) return 1;
c=0;
d=1;
while(1)
{
if (board[m+d][n-d]==role) {
c++;
d++;
}
else break;
}
d=1;
while(1)
{
if (board[m-d][n+d]==role) {
c++;
d++;
}
else break;
}
if (c>=5) return 1;
c=0;
d=1;
while(1)
{
if (board[m-d][n]==role) {
c++;
d++;
}
else break;
}
d=1;
while(1)
{
if (board[m+d][n]==role) {
c++;
d++;
}
else break;
if (c>=5) return 1;
}
}
这个程序的大致框架和迷宫差不多,主要是如何判定是否五子连珠。我是通过键盘输入15*15的方格的坐标来落子,用@和#来代替黑白子,判定方法是通过4次判定,判定横竖两个斜线是否有5个棋子。
以上是通过键盘输入坐标下子,经过老师的优化,可以直接通过光标下子
while(true)
{
printf("\33[%hhd;%hhdH",key_x+1,(key_y+1)*2);
switch(getch())
{
case 183:key_x>0&&key_x--;break;
case 184:key_x<14&&key_x++;break;
case 185:key_y<14&&key_y++;break;
case 186:key_y>0&&key_y--;break;
case 10:if('*'==board[key_x][key_y])
{
board[key_x][key_y]=role;
return;
}
}
}