C++ 使用Qt绘画象棋的思路

本文介绍了如何使用C++和Qt框架来创建一个象棋游戏。首先展示了程序的效果,接着详细讲述了绘制背景的过程,包括设置棋盘间距和绘制棋盘线条。文章提到了采用工厂模式来加载不同类型的棋子,并且利用继承自Chess类的棋子子类,通过重写特定方法实现棋子的绘制。最后,讨论了如何通过工厂函数动态生成棋子并结合Qt的内存管理进行绘制。

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

本文只展示部分代码,仅仅介绍思路

象棋蛮好玩的,但是某些象棋推行健康系统是真的…,有些网站容易崩,所以我想自己搞一个来玩。

0.效果

在这里插入图片描述

1.绘制背景

void GameMainWindow::drawBackground(QPainter& painter)
{
   
   
	{
   
   
		// draw line ——
		for (int i = 0; i < 10; ++i) {
   
   
			painter.drawLine(left_distance, 
							 top_distance + i * gird_height, 
							 left_distance + 8 * gird_width, 
							 top_distance + i * gird_height);
		}
	}
	{
   
   
		// draw line |
		painter.drawLine(left_distance, 
					     top_distance, 
						 left_distance, 
						 top_distance + 9 * gird_height);
		painter.drawLine(default_width -  left_distance,
						 top_distance,
						 default_width - left_distance,
						 top_distance + 9 * gird_height);
		for (int i = 1; i < 8; ++i) {
   
   
			painter.drawLine(left_distance + i * gird_width,
							 top_distance,
							 left_distance + i * gird_width, 
							 top_distance + 4 * gird_height);
			painter.drawLine(left_distance + i * gird_width,
							 top_distance + 5 * gird_height,
							 left_distance + i * gird_width,
						     top_distance + 9 * gird_height);
		}
	}
	{
   
   
		// draw text
		auto pen = painter.pen();
		auto font = painter.font();
		QFont f;
		f.setPointSize(28);
		f.setFamily(tr("华文新魏"));
		painter.setPen(Qt::black);
		painter.setFont(f);
		painter.drawText(left_distance + gird_width / 4,
						 top_distance + (9 * gird_height) / 2 + gird_height / 8,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值