网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
05月19日
漏签
0
天
c++吧
关注:
540,780
贴子:
2,090,921
看贴
图片
吧主推荐
游戏
1
2
3
下一页
尾页
32
回复贴,共
3
页
,跳到
页
确定
<<返回c++吧
>0< 加载中...
【贪吃蛇】详细实现过程,望互相学习。
取消只看楼主
收藏
回复
夜神月YOONA
<
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
夜神月YOONA
<
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
上图只是完成了一个基本的框架。实现的只是基本功能,上下左右,加速等。
夜神月YOONA
<
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
1.分解:整个游戏可分解成 边框 + 蛇 + 障碍物(暂不考虑) + 食物 + 提醒信息(暂不考虑)
为了简单实现,对于障碍物,提醒 暂不考虑
2.还是分解:无论边框, 蛇, 食物 都可以看做是由一点 或者多点构成。
于是可确定点point 是最小单位。
别的补说,列代码:
夜神月YOONA
<
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
1.数据成员:
点有自身的坐标,x,y。 左右兄弟点。
2.成员函数
(1)构造函数,
(2)设置左兄弟点。
(3)设置右兄弟点。
(4)将自己的位置设置成另一点的位置。
(5)重载上一个函数,设置相应的位置。
(6)返回左兄弟点
(7)返回右兄弟点
(8)返回x
(9)返回y
(10)将自身画出来
(11)将自身画出来,需要指定形状
(12)序析构函数
除了draw 函数,其他都已经实现了。
这里指定draw为纯虚函数,point类作为抽象类
夜神月YOONA
<
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
夜神月YOONA
<
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
成员函数:
(1)draw(string);
依赖于windows.h文件, 将str的内容在指定坐标打印出来
(2)draw()
默认打印圆形 一个●是 2 个字节大小的;
下面的实现会极度依赖于2这个数。
夜神月YOONA
<
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
夜神月YOONA
<
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
第一个类pointFactory是抽象工厂类
第二个类circlePointFactory 是生产圆点的工厂。
夜神月YOONA
<
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
夜神月YOONA
<
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
蛇类:
1.数据成员
蛇具有 前进方向, 头(head)和尾(tail)
2.成员函数
(0)枚举方向,东南西北。
(1)构造函数
(2)虚析构函数,蛇负责析构全身的所有点
(3)draw()画出自身
(4)沿着dir方向前进一格
(5)吃食物,
算法: 如果当前蛇为空,那么迟进的食物作为头和尾 否则
将吃进的食物作为头,原来的头退居第二节点。
夜神月YOONA
<
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
(6)
canEat(p)判断当前食物是否能吃到
算法:
如果当前方向为East 食物刚好在头的东边 能吃到
如果当前方向为South 食物刚好在头的南边 能吃到
如果当前方向为West 食物刚好在头的西边 能吃到
如果当前方向为North 食物刚好在头的北边 能吃到
因为圆点占2个字符,所以x的步长为2, 屏幕坐标原点是左上方。
(7)取蛇头
(8)设置前进方向
夜神月YOONA
<
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
夜神月YOONA
<
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
实现一条简单的蛇:
成员函数:
(1)draw()
实现: 先将头部画成◆,然后通过迭代方式画出身体所有点。
(2)move()
实现:1.移动一格前,先将尾部清空。
2.从尾部往头部遍历,将除头外 所有点的坐标 都设为 其右兄弟点的坐标。
3.根据当前方向设置头部前进一格后的坐标。
夜神月YOONA
<
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
夜神月YOONA
<
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
第一个类 生产蛇的抽象工厂
第二个类 生产简单蛇
数据成员:
生产蛇需要点工厂,因为蛇只有一条,设置成静态成员。
成员函数:
(1)构造函数,需要点工厂初始化
(2)makeSnake()需要设初始点数,和出生坐标
实现:
如果蛇已经存在,直接返回 否则
创建一条蛇,吃进numOfPoint 个点,返回。
这里指定是从左到右,横向出生。
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示