C++ MFC棋牌类小游戏day1
好用没用过C++做一个完整一点的东西了,今天开始希望靠我这点微薄的技术来完成这个小游戏。
我现在的水平应该算是菜鸟中的战斗鸡了,所以又很多东西在设计和技术方面肯定会有很大的缺陷,我做这个小游戏的目的单纯为了证明一下我到底还是不是个程序员。。。
这个小游戏是我小时候玩过的一种棋盘类游戏,可能只在我们那边才会知道,不过现在小孩估计已经很少玩了,搞不好要失传了。。。这个游戏名叫马虎吃小人。
大概介绍一下游戏,下面是游戏布局
方框代表老虎,三角形代表小人,每次只能向前后左右一个方向移动一个格,不能斜着走,小人先走。
老虎吃小人规则是老虎附近有小人且小人后面有空格,这样老虎调到空格位置,然后就吃掉小人
游戏大概就是这样,我的计划是先画出棋盘和棋子,然后编写下棋规则,双人对战完成后写单人对战。如果可能的话我会把它放到服务器上,这样可以远程登录就可以玩了。希望都能完成吧。
嗯。。。做人不能好高骛远,先从设计棋盘开始吧。
棋盘是5*5,做成固定大小的太死板了,就按照窗口大小设计吧。
棋盘上下左右距离边框30像素
新建一个单文档,名称为TigerEatPeople,棋盘代码如下
#define BOARD_LINE 5
#define EDG_DISTANCE 30
void CTigerEatPeopleView::DrawBoard(CDC* pDC)
{CRect rect;GetClientRect(&rect);CPen pen1(PS_SOLID, 6, RGB(0, 0, 0));pDC->SelectObject(&pen1);//求水平、垂直间隔if (rect.bottom - rect.top < 60|| rect.right - rect.left < 60){return;}int space_horizontal = (int)((rect.bottom - rect.top - EDG_DISTANCE * 2) / 4);//水平int space_vertical = (int)((rect.right - rect.left - EDG_DISTANCE * 2) / 4);//垂直//画横线for (int i = 0; i < BOARD_LINE; i++){pDC->MoveTo(rect.left + EDG_DISTANCE, rect.top + EDG_DISTANCE + space_horizontal*i);pDC->LineTo(rect.right - EDG_DISTANCE, rect.top + EDG_DISTANCE + space_horizontal*i);}//画竖线for (int i = 0; i < BOARD_LINE; i++){pDC->MoveTo(rect.left + EDG_DISTANCE + space_vertical*i, rect.top + EDG_DISTANCE);pDC->LineTo(rect.left + EDG_DISTANCE + space_vertical*i, rect.bottom - EDG_DISTANCE);}}
一个很low的棋盘就做好了
然后是画棋子,我的计划是写一个父类
父类的成员变量:name,type,color,chose_color,location,height,weight,isChonse,isMove
父类的方法:Move,PaintPiece
暂时就这些吧,想到再加。
emmm感觉自己把自己坑了,分明几分钟就能开始画棋子的。。。
设计完父类和子类,准备研究画棋子了,可以分成2部分:
1.坐标转换
把电脑客户端像素坐标转换为棋盘坐标,根据棋盘坐标画棋子
2.设计棋子
根据棋盘坐标,设计棋子样式。
void Tiger::PaintPiece(CDC *pDC, CRect rect)
{Location t1, t2;//两个老虎的位置int space_horizontal = (int)((rect.bottom - rect.top - EDG_DISTANCE * 2) / 4);//水平int space_vertical = (int)((rect.right - rect.left - EDG_DISTANCE * 2) / 4);//垂直t1.x = rect.left + 30 + space_vertical;t1.y = rect.top + 30 + space_horizontal;t2.x = rect.left + 30 + space_vertical * 3;t2.y = rect.top + 30 + space_horizontal;CPen pen(PS_SOLID, 1, RGB(255, 0, 0));CBrush brush(RGB(255,0,0));CPen *oldpen = pDC->SelectObject(&pen);CBrush *oldbrush = pDC->SelectObject(&brush);pDC->Ellipse(t1.x - 20, t1.y - 20, t1.x + 20, t1.y + 20);pDC->Ellipse(t2.x - 20, t2.y - 20, t2.x + 20, t2.y + 20);pDC->SelectObject(oldpen);pDC->SelectObject(oldbrush);}
今天就先这样吧,今天的代码
链接:https://pan.baidu.com/s/1NVo6k64UhmTzVCXwHIbxOw 密码:pasm
转载于:https://www.cnblogs.com/smh2015/p/9677576.html
C++ MFC棋牌类小游戏day1相关推荐
- HTML5 Canvas 射击类小游戏 平滑的移动 思路
这篇博客主要讲了如何处理HTML5 Canvas 游戏中的角色移动问题. 笔者这几天做了一个 HTML5 Canvas 的射击类小游戏,嗯,名字叫做<DroppingBalls>,大概就是 ...
- HTML5/Canvas太空射击类小游戏源码
下载地址 JavaScript HTML5/Canvas太空射击类小游戏源码,非常值得学习的一款js射击小游戏代码,美术有点老旧,但是代码是完全开源的,有参考价值. dd:
- java文字类小游戏2.0版本
java文字类小游戏 用javaFx面板显示文字类小游戏,目前正已完成基本打斗和打怪爆出武器的开发,后续会不断更新示例图如下: 运行这个类开始代码我已上传至码云,有需要的小伙伴自行拉取代码,git项目 ...
- 人与计算机猜数游戏,猜数字(古老的的密码破译类益智类小游戏)_百度百科...
猜数字 (古老的的密码破译类益智类小游戏) 语音 编辑 锁定 讨论 上传视频 猜数字(又称 Bulls and Cows )是一种古老的的密码破译类益智类小游戏,起源于20世纪中期,一般由两个人或多人 ...
- 3D跑酷类小游戏开发实战
今天,带领大家从零开始开发一款完整的3D跑酷类小游戏,主要面向有一定Egret2D开发经验的小伙伴,手把手教你学习EgretPro开发,快速开启您的EgretPro开发之旅. 下面是整个游戏的制作过程 ...
- 基于 Python 的横版 2D 动作类小游戏
基于 Python 的横版 2D 动作类小游戏 游戏代码 游戏代码 游戏整体代码(基于 pygame 模块开发) // An highlighted block import pygame impor ...
- [安卓] 12、开源一个基于SurfaceView的飞行射击类小游戏
前言 这款安卓小游戏是基于SurfaceView的飞行射击类游戏,采用Java来写,没有采用游戏引擎,注释详细,条理比较清晰,适合初学者了解游戏状态转化自动机和一些继承与封装的技巧. 效果展示 ...
- android开发之网络棋牌类在线游戏开发心得(服务器端、Java)
转自:http://blog.csdn.net/bromon/article/details/253330 Bromon原创 请尊重版权 一个多人在线的棋牌类网络游戏的项目临近尾声,我参与了该项目的整 ...
- android开发之网络棋牌类在线游戏开发心得(服务器端、Java) 好文章值得收藏...
标签: android服务器 2013-10-09 17:28 3618人阅读 评论(0) 收藏 举报 分类: android (11) 转自:http://blog.csdn.net/bromon/ ...
最新文章
- jquery改变css,改变style
- windows 8 安装iis .net 3.5
- maven 打包指定依赖包_Maven打包成Jar文件时依赖包的问题
- 这是我见过对 IOC 和 DI 解释的最清楚的一篇文章了!
- BUUCTF Web [强网杯 2019]随便注
- java流有什么用_在Java中,流比循环有什么优势?
- xrdp出现雪花屏,闪退怎么办?
- 《I'm a Mac:雄狮训练手册》——2.3 账户类型
- python requests下载zip文件_python requests 下载zip包
- 4.计算机网络 -- 4.6 综合布线
- 用selenium做模拟登录163邮箱(有两种方式,行为链)
- Verilog语言程序框架
- 计算机机房的安全知识有哪些,计算机机房消防安全管理制度
- np.arry()的用法
- 理解事务四大特性(Transaction)——原子性、一致性、隔离性和持久性(ACID)
- wpsjs插件开发-采用js和wps交互功能
- pyqt5代码实例2
- java ldap 根ou_【LDAP】LDAP 中 CN, OU, DC 的含义
- 一加手机怎么root权限_一加 A3010手机怎样Root,如何获取Root权限?
- 基金投资组合中的夏普率
热门文章
- 亚马逊鲲鹏系统一款自动下单留评软件
- LeakCanary简单分析
- 圣斗士星矢游戏抽奖计算机怎么计算,圣斗士星矢手游抽奖技巧解析 教你抽橙卡...
- 电子元器件、专业术语和芯片封装的基础知识
- Java实现五子棋对战小游戏【完整版】
- tl-wdr7300虚拟服务器怎么设置,TP-Link TL-WDR7300路由器怎么设置?
- oracle817字符集,Oracle817 版本 不同字符集之间的数据库导入 (转)
- PLC的扫描工作的三个过程
- mysql数据库课程设计机房管理系统_基于web的机房管理(完整源码+论文全套+教学视频)...
- 如何恢复录音删除的录音文件_硬盘分区数据误删除如何恢复?文件删除不用急...