C++ Easyx 三子棋

本文详细描述了制作三子棋游戏的过程,包括设计游戏框架、读取用户操作、数据处理(判断胜负和平局)、图形绘制(棋盘格和棋子),以及代码实现和优化。作者逐步展示了如何用二维数组模拟棋盘,处理鼠标落子事件,以及解决闪退和性能优化问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

思路

框架​编辑

读取操作

数据操作

绘制画面

游戏的数据结构

用二维数组来模拟棋盘格

        赢的情况

        平局情况

Code

代码细节部分

  (1)初始化棋盘格

  (2) 初始化棋子类型​编辑

        事件处理部分 

             落子

框架内代码的完善

      数据处理框架代码的完善

检查是否赢了 (函数)

         绘制图形框架代码的完善

绘制棋盘网格(函数)

绘制棋子 (函数)

绘制提示信息  (函数)

DBUG

优化

代码托管

三子棋/Test.cpp · 孙鹏宇/孙鹏宇的第一个仓库 - 码云 - 开源中国 (gitee.com)


思路

我们遵循先框架,后思路得的思路

框架

首先是读取操作:

读取操作

读取鼠标单击之后的信息

接下来是数据操作:

数据操作

我们只需要对游戏胜负进行判断

胜的清空:一条线三颗棋子都一样

平的情况:棋格全部填满还未分出胜负。

游戏结束时使用弹出告诉玩家游戏结果,然后退出主循环。

绘制画面

我们使用line函数绘制一个3*3的棋盘格:

x玩家时使用line函数对角线画两个线,轮到O玩家落子时时使用cirlce函数画个圆:

游戏的数据结构

用二维数组来模拟棋盘格

棋盘内容为字符串,初始化为‘-'

赢的情况

我们对赢得情况进行穷举:

一共有八种

平局情况

如果9个网格均被棋子填满却没有获胜的一方,那么就是平局:

Code

写代码同样遵循先框架再细节的原则:

我们先把上面的内容转化为代码:

框架:

#include<easyx.h>
#include<iostream>
using namespace std;
	//处理数据
	// 
	//检测玩家是否赢了
bool Checkwin(char str)
{

}
//检测是否平局
bool Checkavg(char str)
{

}

//绘制图像
// 
//绘制棋盘格
void DrawBorad()
{

}
//绘制棋子
void DrawPiece()
{

}
//绘制提示信息
void DrawTipText()
{

}
int main()
{
	initgraph(60,600);//绘制窗口

	bool flag = true;//退出主循环的标识列
	ExMessage msg;//存储消息
	BeginBatchDraw();//渲染缓冲区
	//主循环
	while (flag)
	{
		//读取操作
		while(peekmessage(&msg))//读取消息
		{
			//读取到的细节如何处理稍息再说
		}
		cleardevice();//清屏
       
        //重新绘图
		DrawBorad();
		DrawPiece();
		DrawTipText();

		FlushBatchDraw();//刷新缓冲区
	}
	EndBatchDraw();//刷新缓冲区
	return 0;
}

代码细节部分

如果 x玩家赢了,我们可以用MessageBox()函数弹出了一个框,显示x玩家赢了:

代码如下:

 同样的,O玩家获胜的情况和平局的情况也写一下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孙鹏宇.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值