【好玩的棋盘游戏】编写一个玩家操作的函数和电脑能够操作的两人棋盘游戏,哪边有三个相连的胜出

#include <stdio.h>
#include <stdlib.h>
char arr[3][3];
void print()
{
	int t;
	for(t=0;t<3;t++)
	{
		printf("%c|%c|%c|",arr[t][0],arr[t][1],arr[t][2]);
		printf("\n_|_|_|\n");
	}
}
void init()
{
	int i,j;
	for(i=0;i<3;i++)
	{
		for(j=0;j<3;j++)
		{
			arr[i][j]=' ';
		}
	}
}
void player_move()
{
	int x,y;
	printf("请输入您下棋的坐标!");
	scanf("%d%d",&x,&y);
	x--;
	y--;
	if(arr[x][y]!=' ' )
	{
		printf("该位置已被占用,请重新输入!!!\n");
		player_move();
	}
	else 
		arr[x][y]='X';
}
int computer()
{
	int i, j;
    for (i = 0; i < 3; i++)
    {
        for (j = 0; j < 3; j++)
        {
            if (arr[i][j] == ' ' )
            {
            	arr[i][j]='0';
                break;
            }
        }
        break;
    }
}
char check()
{
	int i;
	for(i=0;i<3;i++)
	{
		if(arr[i][0]==arr[i][1]&&arr[i][1]==arr[i][2])
		{
			return arr[i][0];
		}
	}
	for(i=0;i<3;i++)
	{
		if(arr[0][i]==arr[1][i]&&arr[1][i]==arr[2][i])
		{
			return arr[0][i];
		}
	}
	if(arr[0][0]==arr[1][1]&&arr[1][1]==arr[2][2])
	{
		return arr[0][0];
	}
	if(arr[0][2]==arr[1][1]&&arr[1][1]==arr[2][0])
	{
		return arr[0][2];
	}
	else 
	{
		return ' ';
	}
}
int main()
{
	char none;
	printf("欢迎来到棋盘游戏!\n");
	init();
	do
	{
		print();
		player_move();
		none=check();
		if(none!=' ')
			break;
		computer();
		if(none!=' ')
			break;
	}while(none==' ');
	if(none=='X')
	{
		printf("恭喜您赢了!\n");
	}
	else 
	{
		printf("电脑赢了!\n");
	}
	print();
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以给你提供一个五子棋游戏的Python代码,但是彩色UI的实现需要用到第三方库,比如PyQt或Tkinter等,这里我以Tkinter为例。以下是代码: ```python import tkinter as tk import tkinter.messagebox class ChessBoard: def __init__(self, master): self.master = master self.master.title("五子棋") width = 600 height = 600 self.master.geometry("{}x{}".format(width, height)) self.master.resizable(False, False) self.color = "black" self.game_over = False self.create_widgets() self.create_board() def create_widgets(self): self.canvas = tk.Canvas(self.master, width=600, height=600, bg="#F5DEB3") self.canvas.pack() self.canvas.bind("<Button-1>", self.click) self.reset_button = tk.Button(self.master, text="重新开始", command=self.reset) self.reset_button.pack() def create_board(self): self.board = [[0 for i in range(15)] for j in range(15)] for i in range(15): self.canvas.create_line(50+i*40, 50, 50+i*40, 570) self.canvas.create_line(50, 50+i*40, 570, 50+i*40) def click(self, event): if self.game_over: return x, y = event.x, event.y row, col = (y-50)//40, (x-50)//40 if row < 0 or row > 14 or col < 0 or col > 14 or self.board[row][col] != 0: return self.drawChess(row, col, self.color) self.board[row][col] = 1 if self.color == "black" else 2 if self.isWin(row, col): self.game_over = True tkinter.messagebox.showinfo("提示", self.color + "方胜利!") self.color = "white" if self.color == "black" else "black" def drawChess(self, row, col, color): x, y = col*40+50, row*40+50 if color == "black": self.canvas.create_oval(x-18, y-18, x+18, y+18, fill="black") else: self.canvas.create_oval(x-18, y-18, x+18, y+18, fill="white") def isWin(self, row, col): def checkDirection(dx, dy): count = 1 r, c = row-dx, col-dy while r >= 0 and r < 15 and c >= 0 and c < 15 and self.board[r][c] == self.board[row][col]: count += 1 r -= dx c -= dy r, c = row+dx, col+dy while r >= 0 and r < 15 and c >= 0 and c < 15 and self.board[r][c] == self.board[row][col]: count += 1 r += dx c += dy return count >= 5 return checkDirection(0, 1) or checkDirection(1, 0) or checkDirection(1, 1) or checkDirection(1, -1) def reset(self): self.game_over = False self.color = "black" self.canvas.delete("all") self.create_board() if __name__ == "__main__": root = tk.Tk() ChessBoard(root) root.mainloop() ``` 这个代码实现了一个简单的五子棋游戏,使用了Tkinter作为图形界面库。其中,create_widgets()函数创建了一个Canvas对象用于绘制游戏棋盘和棋子,以及一个Button对象用于重新开始游戏;create_board()函数初始化了游戏棋盘;click()函数处理用户点击事件,判断点击位置是否合法,并在棋盘上绘制相应的棋子;isWin()函数判断当前落子是否形成了五子连珠;reset()函数用于重新开始游戏

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值