c++五子棋先手必胜开局图统计玩家获胜局数

【图文】基于VC++6.0的五子棋游戏开发设计_百度文库
赠送免券下载特权
10W篇文档免费专享
部分付费文档8折起
每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基于VC++6.0的五子棋游戏开发设计
阅读已结束,下载本文到电脑
想免费下载本文?
登录百度文库,专享文档复制特权,积分每天免费拿!
你可能喜欢写在前边:
  本来上学期就已经完成这个大作业,临近考试太忙。
  而且老师最后要查重,就没有把代码放上来。
  如需整个工程,移步
  这篇其实应该在动手编程之前就先想好的。
一、需求分析
有两种对弈模式:人人对弈模式和人机对弈模式
采用黑屏字符输入输出实现UI(杨老师要求!!)
采用打分机制实现五子棋AI
棋盘大小为15*15,棋盘将显示相应的行列号(A-O)
棋子有两种颜色黑和白,代表着对弈的双方,棋子放在棋盘行列交叉处,黑棋先下
黑白任一方先连成5个棋子形成的直线(横线、竖线、对角线),则该方赢对方输
黑白双方都没连成5个棋子形成的直线,且棋盘已满时,为和局
最后一步下的位置需明显标记
最后完成的界面:
二、设计方案
因为是课程作业,所以将采用c++面向对象语言实现,开发工具采用VS2012 ultimate,操作系统环境win7旗舰版64位。大致分为三个模块,棋盘模块、棋子模块、旗手模块(电脑和人)、裁判模块、弈情展示模块、游戏模块。
棋子模块主要负责记录棋子的颜色,坐标等信息。棋盘模块主要负责记录更新棋盘的状态信息。旗手模块主要产生下步棋子,其中电脑旗手通过AI分析产生下步棋子,人旗手通过标准输入获得下步棋子。裁判模块主要负责记录当前对弈模式(人人对弈模式或者人机对弈模式)、当前结果、当前旗手。弈情展示模块主要负责刷新棋盘,输出提示信息如结果等。
  游戏模块主要完成游戏初始化,游戏开始,游戏结束等功能。
最后的类视图:
三、系统实现
棋子类Chess
记录棋子信息:颜色和位置。
主要变量:
0为黑棋,1为白旗。
这里行列均为0-14。
主要方法:
int getColor();
void getPosition(int &row,int &coloumn);
&棋盘类ChessPad
记录棋盘状态信息,那些位置没有棋子,哪些位置有棋子,是什么颜色的棋子。
提供添加棋子方法和获得棋盘信息方法。
主要变量:
  记录最后一步的位置,实现最后一步下的位置有特殊标记
int chesspadstate[15][15];0为空,没有棋子;1为黑棋;2为白旗。
3为最后一步的黑棋;4为最后一步的白旗。
主要方法:
void addChess(Chess);
void getChessPadState(int chesspadstate[15][15]);
抽象类旗手Chesser
  S0为黑方;1为白方。惯例黑方先下
电脑旗手和人旗手的父类,有产生下步棋子的方法。
Chess giveNextChess(const int chesspadstate[15][15]);
电脑旗手类ComputerChesser
Chesser子类,应该有AI对象,根据传入的棋盘状态,计算出下步要下的棋子。
人旗手类PeopleChesser
Chesser子类,从标准输入处获得下步棋子。
裁判类Judge
主要变量:
int currentmode0为人机对弈模式,1为人人对弈模式
int currentchesser0为黑方,1为白方,默认黑方先下
确定 谁是黑方,谁先下
主要方法:
  int judgeResult(const int chesspadstate[15][15]);0为还未能判定胜负,1为黑方胜,2为白方胜,3为和棋
  void setCurrentmode(int currentmode);
  int &nextChesser();
对弈情况显示类ResultDisplay:
主要实现弈情输出
主要方法:
void display(const int chesspadstate[15][15], String msg);刷新显示
五子棋AI思路
阅读(...) 评论()没有更多推荐了,
不良信息举报
举报内容:
人机版五子棋两种算法概述
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!&p&我小学上过一些电脑兴趣班,之后适逢小学图书馆有些废弃的 Apple II,就去借书自学 Applesoft Basic 和 8086 汇编。然后上中一家里买了个二手PC AT,就读书自学 DOS 和 GWBASIC、x86 汇编、C 语言等。中二继续读书自学图形学做三维软件,并在游戏公司做游戏开发,这几年中又读书自学了 C++,中五(即内地高二)才发行了第一个作为主程开发的游戏《王子传奇》。记得应该是中六(1995年左右)才第一次用到互联网,要拨号而且逐分钟计费。&/p&&p&似乎到今天我还是比较喜欢「阅读→写代码」去学习编程和相关技术,所以也做了个&a href=&//link.zhihu.com/?target=https%3A//github.com/miloyip/game-programmer& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&书单&/a&给有需要的人。&/p&
我小学上过一些电脑兴趣班,之后适逢小学图书馆有些废弃的 Apple II,就去借书自学 Applesoft Basic 和 8086 汇编。然后上中一家里买了个二手PC AT,就读书自学 DOS 和 GWBASIC、x86 汇编、C 语言等。中二继续读书自学图形学做三维软件,并在游戏公司做游戏…
有几个我觉得挺好玩的C++11/14专属项目,项目都不大,都属于业余时间可以搞定的。&br&&br&&a href=&//link.zhihu.com/?target=https%3A//github.com/pfultz2/Fit& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&pfultz2/Fit · GitHub&/a&&br&这厮绝对是在恶搞C++11/14。&br&&br&&a href=&//link.zhihu.com/?target=https%3A//github.com/pfultz2/Linq& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&pfultz2/Linq · GitHub&/a&&br&这个LINQ的实现貌似是我见过的最C++11的。&br&&br&&a href=&//link.zhihu.com/?target=https%3A//github.com/ipkn/crow& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ipkn/crow · GitHub&/a&&br&C++11黑魔法版Flask。&br&&br&&a href=&//link.zhihu.com/?target=https%3A//github.com/ldionne/hana& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ldionne/hana · GitHub&/a&&br&C++14版的Boost.MPL,想练邪派武功必备入门秘籍&br&&br&&a href=&//link.zhihu.com/?target=https%3A//github.com/djowel/spirit_x3& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&djowel/spirit_x3 · GitHub&/a&&br&之前漏了这个,Boost.Spirit的C++11魔改版。&br&&br&PS. 基本上每个项目都是not suitable for Visual C++,用VC的盆友们可以放学了。
有几个我觉得挺好玩的C++11/14专属项目,项目都不大,都属于业余时间可以搞定的。
这厮绝对是在恶搞C++11/14。
这个LINQ的实现貌似是我见过的最C++11的。
C++11黑魔法版Flask。
&figure&&img src=&https://pic1.zhimg.com/v2-99f84a507cf46c1bcbee2_b.jpg& data-rawwidth=&442& data-rawheight=&646& class=&origin_image zh-lightbox-thumb& width=&442& data-original=&https://pic1.zhimg.com/v2-99f84a507cf46c1bcbee2_r.jpg&&&/figure&&p&这一次我们应用printf输出实现一个经典的小游戏—贪吃蛇,主要难点是小蛇数据如何存储、如何实现转弯的效果、吃到食物后如何增加长度。更多内容可参看《C语言课程设计与游戏开发实践教程》\第3章\ 3.4 贪吃蛇。&/p&&p&&br&&/p&&h2&1 构造小蛇&/h2&&p&首先,在画面中显示一条静止的小蛇。二维数组canvas[High][Width]的对应元素,值为0输出空格,-1输出边框#,1输出蛇头@,大于1的正数输出蛇身*。startup()函数中初始化蛇头在画布中间位置(canvas[High/2][Width/2] = 1;),蛇头向左依次生成4个蛇身(for (i=1;i&=4;i++) canvas[High/2][Width/2-i] = i+1;),元素值分别为2、3、4、5。&/p&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-ce78f4b98a6f8ff5d26ea9e_b.jpg& data-rawwidth=&213& data-rawheight=&326& class=&content_image& width=&213&&&/figure&&div class=&highlight&&&pre&&code class=&language-c&&&span&&/span&&span class=&cp&&#include&/span& &span class=&cpf&&&stdio.h&&/span&&span class=&cp&&&/span&
&span class=&cp&&#include&/span& &span class=&cpf&&&stdlib.h&&/span&&span class=&cp&&&/span&
&span class=&cp&&#include&/span& &span class=&cpf&&&conio.h&&/span&&span class=&cp&&&/span&
&span class=&cp&&#include&/span& &span class=&cpf&&&windows.h&&/span&&span class=&cp&&&/span&
&span class=&cp&&#define High 20
&/span&&span class=&c1&&// 游戏画面尺寸&/span&
&span class=&cp&&#define Width 30&/span&
&span class=&c1&&// 全局变量&/span&
&span class=&kt&&int&/span& &span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&High&/span&&span class=&p&&][&/span&&span class=&n&&Width&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&p&&{&/span&&span class=&mi&&0&/span&&span class=&p&&};&/span& &span class=&c1&&// 二维数组存储游戏画布中对应的元素&/span&
&span class=&c1&&// 0为空格,-1为边框#,1为蛇头@,大于1的正数为蛇身*&/span&
&span class=&kt&&void&/span& &span class=&nf&&gotoxy&/span&&span class=&p&&(&/span&&span class=&kt&&int&/span& &span class=&n&&x&/span&&span class=&p&&,&/span&&span class=&kt&&int&/span& &span class=&n&&y&/span&&span class=&p&&)&/span&
&span class=&c1&&//光标移动到(x,y)位置&/span&
&span class=&p&&{&/span&
&span class=&n&&HANDLE&/span& &span class=&n&&handle&/span& &span class=&o&&=&/span& &span class=&n&&GetStdHandle&/span&&span class=&p&&(&/span&&span class=&n&&STD_OUTPUT_HANDLE&/span&&span class=&p&&);&/span&
&span class=&n&&COORD&/span& &span class=&n&&pos&/span&&span class=&p&&;&/span&
&span class=&n&&pos&/span&&span class=&p&&.&/span&&span class=&n&&X&/span& &span class=&o&&=&/span& &span class=&n&&x&/span&&span class=&p&&;&/span&
&span class=&n&&pos&/span&&span class=&p&&.&/span&&span class=&n&&Y&/span& &span class=&o&&=&/span& &span class=&n&&y&/span&&span class=&p&&;&/span&
&span class=&n&&SetConsoleCursorPosition&/span&&span class=&p&&(&/span&&span class=&n&&handle&/span&&span class=&p&&,&/span&&span class=&n&&pos&/span&&span class=&p&&);&/span&
&span class=&p&&}&/span&
&span class=&kt&&void&/span& &span class=&nf&&startup&/span&&span class=&p&&()&/span& &span class=&c1&&// 数据初始化&/span&
&span class=&p&&{&/span&
&span class=&kt&&int&/span& &span class=&n&&i&/span&&span class=&p&&,&/span&&span class=&n&&j&/span&&span class=&p&&;&/span&
&span class=&c1&&// 初始化边框&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&i&/span&&span class=&o&&=&/span&&span class=&mi&&0&/span&&span class=&p&&;&/span&&span class=&n&&i&/span&&span class=&o&&&&/span&&span class=&n&&High&/span&&span class=&p&&;&/span&&span class=&n&&i&/span&&span class=&o&&++&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&][&/span&&span class=&mi&&0&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&][&/span&&span class=&n&&Width&/span&&span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&j&/span&&span class=&o&&=&/span&&span class=&mi&&0&/span&&span class=&p&&;&/span&&span class=&n&&j&/span&&span class=&o&&&&/span&&span class=&n&&Width&/span&&span class=&p&&;&/span&&span class=&n&&j&/span&&span class=&o&&++&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&mi&&0&/span&&span class=&p&&][&/span&&span class=&n&&j&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&High&/span&&span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&][&/span&&span class=&n&&j&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&c1&&// 初始化蛇头位置&/span&
&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&High&/span&&span class=&o&&/&/span&&span class=&mi&&2&/span&&span class=&p&&][&/span&&span class=&n&&Width&/span&&span class=&o&&/&/span&&span class=&mi&&2&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&c1&&// 初始化蛇身,画布中元素值分别为2,3,4,5....&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&i&/span&&span class=&o&&=&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&&span class=&n&&i&/span&&span class=&o&&&=&/span&&span class=&mi&&4&/span&&span class=&p&&;&/span&&span class=&n&&i&/span&&span class=&o&&++&/span&&span class=&p&&)&/span&
&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&High&/span&&span class=&o&&/&/span&&span class=&mi&&2&/span&&span class=&p&&][&/span&&span class=&n&&Width&/span&&span class=&o&&/&/span&&span class=&mi&&2&/span&&span class=&o&&-&/span&&span class=&n&&i&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&n&&i&/span&&span class=&o&&+&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&kt&&void&/span& &span class=&nf&&show&/span&&span class=&p&&()&/span&
&span class=&c1&&// 显示画面&/span&
&span class=&p&&{&/span&
&span class=&n&&gotoxy&/span&&span class=&p&&(&/span&&span class=&mi&&0&/span&&span class=&p&&,&/span&&span class=&mi&&0&/span&&span class=&p&&);&/span&
&span class=&c1&&// 光标移动到原点位置,以下重画清屏&/span&
&span class=&kt&&int&/span& &span class=&n&&i&/span&&span class=&p&&,&/span&&span class=&n&&j&/span&&span class=&p&&;&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&i&/span&&span class=&o&&=&/span&&span class=&mi&&0&/span&&span class=&p&&;&/span&&span class=&n&&i&/span&&span class=&o&&&&/span&&span class=&n&&High&/span&&span class=&p&&;&/span&&span class=&n&&i&/span&&span class=&o&&++&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&j&/span&&span class=&o&&=&/span&&span class=&mi&&0&/span&&span class=&p&&;&/span&&span class=&n&&j&/span&&span class=&o&&&&/span&&span class=&n&&Width&/span&&span class=&p&&;&/span&&span class=&n&&j&/span&&span class=&o&&++&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&][&/span&&span class=&n&&j&/span&&span class=&p&&]&/span&&span class=&o&&==&/span&&span class=&mi&&0&/span&&span class=&p&&)&/span&
&span class=&n&&printf&/span&&span class=&p&&(&/span&&span class=&s&&& &&/span&&span class=&p&&);&/span&
&span class=&c1&&//
输出空格&/span&
&span class=&k&&else&/span& &span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&][&/span&&span class=&n&&j&/span&&span class=&p&&]&/span&&span class=&o&&==-&/span&&span class=&mi&&1&/span&&span class=&p&&)&/span&
&span class=&n&&printf&/span&&span class=&p&&(&/span&&span class=&s&&&#&&/span&&span class=&p&&);&/span&
&span class=&c1&&//
输出边框#&/span&
&span class=&k&&else&/span& &span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&][&/span&&span class=&n&&j&/span&&span class=&p&&]&/span&&span class=&o&&==&/span&&span class=&mi&&1&/span&&span class=&p&&)&/span&
&span class=&n&&printf&/span&&span class=&p&&(&/span&&span class=&s&&&@&&/span&&span class=&p&&);&/span&
&span class=&c1&&//
输出蛇头@&/span&
&span class=&k&&else&/span& &span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&][&/span&&span class=&n&&j&/span&&span class=&p&&]&/span&&span class=&o&&&&/span&&span class=&mi&&1&/span&&span class=&p&&)&/span&
&span class=&n&&printf&/span&&span class=&p&&(&/span&&span class=&s&&&*&&/span&&span class=&p&&);&/span&
&span class=&c1&&//
输出蛇身*&/span&
&span class=&p&&}&/span&
&span class=&n&&printf&/span&&span class=&p&&(&/span&&span class=&s&&&&/span&&span class=&se&&\n&/span&&span class=&s&&&&/span&&span class=&p&&);&/span&
&span class=&p&&}&/span&
&span class=&p&&}&/span&
&span class=&kt&&void&/span& &span class=&nf&&updateWithoutInput&/span&&span class=&p&&()&/span&
&span class=&c1&&// 与用户输入无关的更新&/span&
&span class=&p&&{&/span&
&span class=&p&&}&/span&
&span class=&kt&&void&/span& &span class=&nf&&updateWithInput&/span&&span class=&p&&()&/span&
&span class=&c1&&// 与用户输入有关的更新&/span&
&span class=&p&&{&/span&
&span class=&p&&}&/span&
&span class=&kt&&int&/span& &span class=&nf&&main&/span&&span class=&p&&()&/span&
&span class=&p&&{&/span&
&span class=&n&&startup&/span&&span class=&p&&();&/span&
&span class=&c1&&// 数据初始化 &/span&
&span class=&k&&while&/span& &span class=&p&&(&/span&&span class=&mi&&1&/span&&span class=&p&&)&/span& &span class=&c1&&//
游戏循环执行&/span&
&span class=&p&&{&/span&
&span class=&n&&show&/span&&span class=&p&&();&/span&
&span class=&c1&&// 显示画面&/span&
&span class=&n&&updateWithoutInput&/span&&span class=&p&&();&/span&
&span class=&c1&&// 与用户输入无关的更新&/span&
&span class=&n&&updateWithInput&/span&&span class=&p&&();&/span&
&span class=&c1&&// 与用户输入有关的更新&/span&
&span class=&p&&}&/span&
&span class=&k&&return&/span& &span class=&mi&&0&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&/code&&/pre&&/div&&p&&br&&/p&&h2&2 小蛇自动移动&/h2&&p&实现小蛇的移动是贪吃蛇游戏的难点,下图列出了小蛇分别向右、向上运动后,对应二维数组元素值的变化,从中我们可以得出实现思路。&/p&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-d2e05f365ed0bda395d66a_b.jpg& data-rawwidth=&443& data-rawheight=&266& class=&origin_image zh-lightbox-thumb& width=&443& data-original=&https://pic3.zhimg.com/v2-d2e05f365ed0bda395d66a_r.jpg&&&/figure&&p&假设小蛇元素为54321,其中1为蛇头、5432为蛇身、最大值5为蛇尾。首先将所有大于0的元素加1,得到65432;将最大值6变为0,即去除了原来的蛇尾;再根据对应的移动方向,将2对应方向的元素由0变成1;如此即实现了小蛇的移动。小蛇向上移动的对应流程如图所示。&/p&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-b54ebde809a736d66dac4cc_b.jpg& data-rawwidth=&417& data-rawheight=&273& class=&content_image& width=&417&&&/figure&&p&定义变量int moveDirection表示小蛇的移动方向,值1、2、3、4分别表示小蛇向上、下、左、右方向移动,小蛇移动实现在moveSnakeByDirection()函数中。&/p&&div class=&highlight&&&pre&&code class=&language-c&&&span&&/span&&span class=&cp&&#include&/span& &span class=&cpf&&&stdio.h&&/span&&span class=&cp&&&/span&
&span class=&cp&&#include&/span& &span class=&cpf&&&stdlib.h&&/span&&span class=&cp&&&/span&
&span class=&cp&&#include&/span& &span class=&cpf&&&conio.h&&/span&&span class=&cp&&&/span&
&span class=&cp&&#include&/span& &span class=&cpf&&&windows.h&&/span&&span class=&cp&&&/span&
&span class=&cp&&#define High 20
&/span&&span class=&c1&&// 游戏画面尺寸&/span&
&span class=&cp&&#define Width 30&/span&
&span class=&c1&&// 全局变量&/span&
&span class=&kt&&int&/span& &span class=&n&&moveDirection&/span&&span class=&p&&;&/span& &span class=&c1&&// 小蛇移动方向,上下左右分别用1,2,3,4表示&/span&
&span class=&kt&&int&/span& &span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&High&/span&&span class=&p&&][&/span&&span class=&n&&Width&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&p&&{&/span&&span class=&mi&&0&/span&&span class=&p&&};&/span& &span class=&c1&&// 二维数组存储游戏画布中对应的元素&/span&
&span class=&c1&&// 0为空格0,-1为边框#,1为蛇头@,大于1的正数为蛇身*&/span&
&span class=&kt&&void&/span& &span class=&nf&&gotoxy&/span&&span class=&p&&(&/span&&span class=&kt&&int&/span& &span class=&n&&x&/span&&span class=&p&&,&/span&&span class=&kt&&int&/span& &span class=&n&&y&/span&&span class=&p&&)&/span&
&span class=&c1&&//光标移动到(x,y)位置&/span&
&span class=&p&&{&/span&
&span class=&n&&HANDLE&/span& &span class=&n&&handle&/span& &span class=&o&&=&/span& &span class=&n&&GetStdHandle&/span&&span class=&p&&(&/span&&span class=&n&&STD_OUTPUT_HANDLE&/span&&span class=&p&&);&/span&
&span class=&n&&COORD&/span& &span class=&n&&pos&/span&&span class=&p&&;&/span&
&span class=&n&&pos&/span&&span class=&p&&.&/span&&span class=&n&&X&/span& &span class=&o&&=&/span& &span class=&n&&x&/span&&span class=&p&&;&/span&
&span class=&n&&pos&/span&&span class=&p&&.&/span&&span class=&n&&Y&/span& &span class=&o&&=&/span& &span class=&n&&y&/span&&span class=&p&&;&/span&
&span class=&n&&SetConsoleCursorPosition&/span&&span class=&p&&(&/span&&span class=&n&&handle&/span&&span class=&p&&,&/span&&span class=&n&&pos&/span&&span class=&p&&);&/span&
&span class=&p&&}&/span&
&span class=&c1&&// 移动小蛇&/span&
&span class=&c1&&// 第一步扫描数组canvas所有元素,找到正数元素都+1&/span&
&span class=&c1&&// 找到最大元素(即蛇尾巴),把其变为0&/span&
&span class=&c1&&// 找到=2的元素(即蛇头),再根据输出的上下左右方向,把对应的另一个像素值设为1(新蛇头)&/span&
&span class=&kt&&void&/span& &span class=&nf&&moveSnakeByDirection&/span&&span class=&p&&()&/span&
&span class=&p&&{&/span&
&span class=&kt&&int&/span& &span class=&n&&i&/span&&span class=&p&&,&/span&&span class=&n&&j&/span&&span class=&p&&;&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&i&/span&&span class=&o&&=&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&&span class=&n&&i&/span&&span class=&o&&&&/span&&span class=&n&&High&/span&&span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&&span class=&n&&i&/span&&span class=&o&&++&/span&&span class=&p&&)&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&j&/span&&span class=&o&&=&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&&span class=&n&&j&/span&&span class=&o&&&&/span&&span class=&n&&Width&/span&&span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&&span class=&n&&j&/span&&span class=&o&&++&/span&&span class=&p&&)&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&][&/span&&span class=&n&&j&/span&&span class=&p&&]&/span&&span class=&o&&&&/span&&span class=&mi&&0&/span&&span class=&p&&)&/span&
&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&][&/span&&span class=&n&&j&/span&&span class=&p&&]&/span&&span class=&o&&++&/span&&span class=&p&&;&/span&
&span class=&kt&&int&/span& &span class=&n&&oldTail_i&/span&&span class=&p&&,&/span&&span class=&n&&oldTail_j&/span&&span class=&p&&,&/span&&span class=&n&&oldHead_i&/span&&span class=&p&&,&/span&&span class=&n&&oldHead_j&/span&&span class=&p&&;&/span&
&span class=&kt&&int&/span& &span class=&n&&max&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&&span class=&p&&;&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&i&/span&&span class=&o&&=&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&&span class=&n&&i&/span&&span class=&o&&&&/span&&span class=&n&&High&/span&&span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&&span class=&n&&i&/span&&span class=&o&&++&/span&&span class=&p&&)&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&j&/span&&span class=&o&&=&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&&span class=&n&&j&/span&&span class=&o&&&&/span&&span class=&n&&Width&/span&&span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&&span class=&n&&j&/span&&span class=&o&&++&/span&&span class=&p&&)&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&][&/span&&span class=&n&&j&/span&&span class=&p&&]&/span&&span class=&o&&&&/span&&span class=&mi&&0&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&max&/span&&span class=&o&&&&/span&&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&][&/span&&span class=&n&&j&/span&&span class=&p&&])&/span&
&span class=&p&&{&/span&
&span class=&n&&max&/span& &span class=&o&&=&/span& &span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&][&/span&&span class=&n&&j&/span&&span class=&p&&];&/span&
&span class=&n&&oldTail_i&/span& &span class=&o&&=&/span& &span class=&n&&i&/span&&span class=&p&&;&/span&
&span class=&n&&oldTail_j&/span& &span class=&o&&=&/span& &span class=&n&&j&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&][&/span&&span class=&n&&j&/span&&span class=&p&&]&/span&&span class=&o&&==&/span&&span class=&mi&&2&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&n&&oldHead_i&/span& &span class=&o&&=&/span& &span class=&n&&i&/span&&span class=&p&&;&/span&
&span class=&n&&oldHead_j&/span& &span class=&o&&=&/span& &span class=&n&&j&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&p&&}&/span&
&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&oldTail_i&/span&&span class=&p&&][&/span&&span class=&n&&oldTail_j&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&&span class=&p&&;&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&moveDirection&/span&&span class=&o&&==&/span&&span class=&mi&&1&/span&&span class=&p&&)&/span& &span class=&c1&&// 向上移动&/span&
&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&oldHead_i&/span&&span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&][&/span&&span class=&n&&oldHead_j&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&moveDirection&/span&&span class=&o&&==&/span&&span class=&mi&&2&/span&&span class=&p&&)&/span& &span class=&c1&&// 向下移动&/span&
&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&oldHead_i&/span&&span class=&o&&+&/span&&span class=&mi&&1&/span&&span class=&p&&][&/span&&span class=&n&&oldHead_j&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&moveDirection&/span&&span class=&o&&==&/span&&span class=&mi&&3&/span&&span class=&p&&)&/span& &span class=&c1&&// 向左移动&/span&
&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&oldHead_i&/span&&span class=&p&&][&/span&&span class=&n&&oldHead_j&/span&&span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&moveDirection&/span&&span class=&o&&==&/span&&span class=&mi&&4&/span&&span class=&p&&)&/span& &span class=&c1&&// 向右移动&/span&
&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&oldHead_i&/span&&span class=&p&&][&/span&&span class=&n&&oldHead_j&/span&&span class=&o&&+&/span&&span class=&mi&&1&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&kt&&void&/span& &span class=&nf&&startup&/span&&span class=&p&&()&/span& &span class=&c1&&// 数据初始化&/span&
&span class=&p&&{&/span&
&span class=&kt&&int&/span& &span class=&n&&i&/span&&span class=&p&&,&/span&&span class=&n&&j&/span&&span class=&p&&;&/span&
&span class=&c1&&// 初始化边框&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&i&/span&&span class=&o&&=&/span&&span class=&mi&&0&/span&&span class=&p&&;&/span&&span class=&n&&i&/span&&span class=&o&&&&/span&&span class=&n&&High&/span&&span class=&p&&;&/span&&span class=&n&&i&/span&&span class=&o&&++&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&][&/span&&span class=&mi&&0&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&][&/span&&span class=&n&&Width&/span&&span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&j&/span&&span class=&o&&=&/span&&span class=&mi&&0&/span&&span class=&p&&;&/span&&span class=&n&&j&/span&&span class=&o&&&&/span&&span class=&n&&Width&/span&&span class=&p&&;&/span&&span class=&n&&j&/span&&span class=&o&&++&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&mi&&0&/span&&span class=&p&&][&/span&&span class=&n&&j&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&High&/span&&span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&][&/span&&span class=&n&&j&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&c1&&// 初始化蛇头位置&/span&
&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&High&/span&&span class=&o&&/&/span&&span class=&mi&&2&/span&&span class=&p&&][&/span&&span class=&n&&Width&/span&&span class=&o&&/&/span&&span class=&mi&&2&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&c1&&// 初始化蛇身,画布中元素值分别为2,3,4,5....&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&i&/span&&span class=&o&&=&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&&span class=&n&&i&/span&&span class=&o&&&=&/span&&span class=&mi&&4&/span&&span class=&p&&;&/span&&span class=&n&&i&/span&&span class=&o&&++&/span&&span class=&p&&)&/span&
&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&High&/span&&span class=&o&&/&/span&&span class=&mi&&2&/span&&span class=&p&&][&/span&&span class=&n&&Width&/span&&span class=&o&&/&/span&&span class=&mi&&2&/span&&span class=&o&&-&/span&&span class=&n&&i&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&n&&i&/span&&span class=&o&&+&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&c1&&// 初始小蛇向右移动&/span&
&span class=&n&&moveDirection&/span& &span class=&o&&=&/span& &span class=&mi&&4&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&kt&&void&/span& &span class=&nf&&show&/span&&span class=&p&&()&/span&
&span class=&c1&&// 显示画面&/span&
&span class=&p&&{&/span&
&span class=&n&&gotoxy&/span&&span class=&p&&(&/span&&span class=&mi&&0&/span&&span class=&p&&,&/span&&span class=&mi&&0&/span&&span class=&p&&);&/span&
&span class=&c1&&// 光标移动到原点位置,以下重画清屏&/span&
&span class=&kt&&int&/span& &span class=&n&&i&/span&&span class=&p&&,&/span&&span class=&n&&j&/span&&span class=&p&&;&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&i&/span&&span class=&o&&=&/span&&span class=&mi&&0&/span&&span class=&p&&;&/span&&span class=&n&&i&/span&&span class=&o&&&&/span&&span class=&n&&High&/span&&span class=&p&&;&/span&&span class=&n&&i&/span&&span class=&o&&++&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&j&/span&&span class=&o&&=&/span&&span class=&mi&&0&/span&&span class=&p&&;&/span&&span class=&n&&j&/span&&span class=&o&&&&/span&&span class=&n&&Width&/span&&span class=&p&&;&/span&&span class=&n&&j&/span&&span class=&o&&++&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&][&/span&&span class=&n&&j&/span&&span class=&p&&]&/span&&span class=&o&&==&/span&&span class=&mi&&0&/span&&span class=&p&&)&/span&
&span class=&n&&printf&/span&&span class=&p&&(&/span&&span class=&s&&& &&/span&&span class=&p&&);&/span&
&span class=&c1&&//
输出空格&/span&
&span class=&k&&else&/span& &span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&][&/span&&span class=&n&&j&/span&&span class=&p&&]&/span&&span class=&o&&==-&/span&&span class=&mi&&1&/span&&span class=&p&&)&/span&
&span class=&n&&printf&/span&&span class=&p&&(&/span&&span class=&s&&&#&&/span&&span class=&p&&);&/span&
&span class=&c1&&//
输出边框#&/span&
&span class=&k&&else&/span& &span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&][&/span&&span class=&n&&j&/span&&span class=&p&&]&/span&&span class=&o&&==&/span&&span class=&mi&&1&/span&&span class=&p&&)&/span&
&span class=&n&&printf&/span&&span class=&p&&(&/span&&span class=&s&&&@&&/span&&span class=&p&&);&/span&
&span class=&c1&&//
输出蛇头@&/span&
&span class=&k&&else&/span& &span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&][&/span&&span class=&n&&j&/span&&span class=&p&&]&/span&&span class=&o&&&&/span&&span class=&mi&&1&/span&&span class=&p&&)&/span&
&span class=&n&&printf&/span&&span class=&p&&(&/span&&span class=&s&&&*&&/span&&span class=&p&&);&/span&
&span class=&c1&&//
输出蛇身*&/span&
&span class=&p&&}&/span&
&span class=&n&&printf&/span&&span class=&p&&(&/span&&span class=&s&&&&/span&&span class=&se&&\n&/span&&span class=&s&&&&/span&&span class=&p&&);&/span&
&span class=&p&&}&/span&
&span class=&n&&Sleep&/span&&span class=&p&&(&/span&&span class=&mi&&100&/span&&span class=&p&&);&/span&
&span class=&p&&}&/span&
&span class=&kt&&void&/span& &span class=&nf&&updateWithoutInput&/span&&span class=&p&&()&/span&
&span class=&c1&&// 与用户输入无关的更新&/span&
&span class=&p&&{&/span&
&span class=&n&&moveSnakeByDirection&/span&&span class=&p&&();&/span&
&span class=&p&&}&/span&
&span class=&kt&&void&/span& &span class=&nf&&updateWithInput&/span&&span class=&p&&()&/span&
&span class=&c1&&// 与用户输入有关的更新&/span&
&span class=&p&&{&/span&
&span class=&p&&}&/span&
&span class=&kt&&int&/span& &span class=&nf&&main&/span&&span class=&p&&()&/span&
&span class=&p&&{&/span&
&span class=&n&&startup&/span&&span class=&p&&();&/span&
&span class=&c1&&// 数据初始化 &/span&
&span class=&k&&while&/span& &span class=&p&&(&/span&&span class=&mi&&1&/span&&span class=&p&&)&/span& &span class=&c1&&//
游戏循环执行&/span&
&span class=&p&&{&/span&
&span class=&n&&show&/span&&span class=&p&&();&/span&
&span class=&c1&&// 显示画面&/span&
&span class=&n&&updateWithoutInput&/span&&span class=&p&&();&/span&
&span class=&c1&&// 与用户输入无关的更新&/span&
&span class=&n&&updateWithInput&/span&&span class=&p&&();&/span&
&span class=&c1&&// 与用户输入有关的更新&/span&
&span class=&p&&}&/span&
&span class=&k&&return&/span& &span class=&mi&&0&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&/code&&/pre&&/div&&p&&br&&/p&&h2&3 玩家控制小蛇移动&/h2&&p&这一步的实现比较简单,在updateWithInput()函数中按asdw键改变moveDirection的值,然后调用moveSnakeByDirection()实现小蛇向不同方向的移动,如图所示。&/p&&p&&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-4d85b32d36ab924faa06c1fc_b.jpg& data-rawwidth=&168& data-rawheight=&256& class=&content_image& width=&168&&&/figure&&div class=&highlight&&&pre&&code class=&language-c&&&span&&/span&&span class=&kt&&void&/span& &span class=&nf&&updateWithInput&/span&&span class=&p&&()&/span&
&span class=&c1&&// 与用户输入有关的更新&/span&
&span class=&p&&{&/span&
&span class=&kt&&char&/span& &span class=&n&&input&/span&&span class=&p&&;&/span&
&span class=&k&&if&/span&&span class=&p&&(&/span&&span class=&n&&kbhit&/span&&span class=&p&&())&/span&
&span class=&c1&&// 判断是否有输入&/span&
&span class=&p&&{&/span&
&span class=&n&&input&/span& &span class=&o&&=&/span& &span class=&n&&getch&/span&&span class=&p&&();&/span&
&span class=&c1&&// 根据用户的不同输入来移动,不必输入回车&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&input&/span& &span class=&o&&==&/span& &span class=&sc&&'a'&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&n&&moveDirection&/span& &span class=&o&&=&/span& &span class=&mi&&3&/span&&span class=&p&&;&/span&
&span class=&c1&&// 位置左移&/span&
&span class=&n&&moveSnakeByDirection&/span&&span class=&p&&();&/span&
&span class=&p&&}&/span&
&span class=&k&&else&/span& &span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&input&/span& &span class=&o&&==&/span& &span class=&sc&&'d'&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&n&&moveDirection&/span& &span class=&o&&=&/span& &span class=&mi&&4&/span&&span class=&p&&;&/span&
&span class=&c1&&// 位置右移&/span&
&span class=&n&&moveSnakeByDirection&/span&&span class=&p&&();&/span&
&span class=&p&&}&/span&
&span class=&k&&else&/span& &span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&input&/span& &span class=&o&&==&/span& &span class=&sc&&'w'&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&n&&moveDirection&/span& &span class=&o&&=&/span& &span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&c1&&// 位置上移&/span&
&span class=&n&&moveSnakeByDirection&/span&&span class=&p&&();&/span&
&span class=&p&&}&/span&
&span class=&k&&else&/span& &span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&input&/span& &span class=&o&&==&/span& &span class=&sc&&'s'&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&n&&moveDirection&/span& &span class=&o&&=&/span& &span class=&mi&&2&/span&&span class=&p&&;&/span&
&span class=&c1&&// 位置下移&/span&
&span class=&n&&moveSnakeByDirection&/span&&span class=&p&&();&/span&
&span class=&p&&}&/span&
&span class=&p&&}&/span&
&span class=&p&&}&/span&
&/code&&/pre&&/div&&p&&br&&/p&&h2&4 判断游戏失败&/h2&&p&当小蛇和边框或自身发生碰撞时,游戏失败,如图所示。&br&&/p&&figure&&img src=&https://pic2.zhimg.com/v2-41e56dbb87ebbe77e1ad33ff_b.jpg& data-rawwidth=&189& data-rawheight=&291& class=&content_image& width=&189&&&/figure&&div class=&highlight&&&pre&&code class=&language-c&&&span&&/span&&span class=&kt&&void&/span& &span class=&nf&&moveSnakeByDirection&/span&&span class=&p&&()&/span&
&span class=&p&&{&/span&
&span class=&kt&&int&/span& &span class=&n&&i&/span&&span class=&p&&,&/span&&span class=&n&&j&/span&&span class=&p&&;&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&i&/span&&span class=&o&&=&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&&span class=&n&&i&/span&&span class=&o&&&&/span&&span class=&n&&High&/span&&span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&&span class=&n&&i&/span&&span class=&o&&++&/span&&span class=&p&&)&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&j&/span&&span class=&o&&=&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&&span class=&n&&j&/span&&span class=&o&&&&/span&&span class=&n&&Width&/span&&span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&&span class=&n&&j&/span&&span class=&o&&++&/span&&span class=&p&&)&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&][&/span&&span class=&n&&j&/span&&span class=&p&&]&/span&&span class=&o&&&&/span&&span class=&mi&&0&/span&&span class=&p&&)&/span&
&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&][&/span&&span class=&n&&j&/span&&span class=&p&&]&/span&&span class=&o&&++&/span&&span class=&p&&;&/span&
&span class=&kt&&int&/span& &span class=&n&&oldTail_i&/span&&span class=&p&&,&/span&&span class=&n&&oldTail_j&/span&&span class=&p&&,&/span&&span class=&n&&oldHead_i&/span&&span class=&p&&,&/span&&span class=&n&&oldHead_j&/span&&span class=&p&&;&/span&
&span class=&kt&&int&/span& &span class=&n&&max&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&&span class=&p&&;&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&i&/span&&span class=&o&&=&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&&span class=&n&&i&/span&&span class=&o&&&&/span&&span class=&n&&High&/span&&span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&&span class=&n&&i&/span&&span class=&o&&++&/span&&span class=&p&&)&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&j&/span&&span class=&o&&=&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&&span class=&n&&j&/span&&span class=&o&&&&/span&&span class=&n&&Width&/span&&span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&&span class=&n&&j&/span&&span class=&o&&++&/span&&span class=&p&&)&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&][&/span&&span class=&n&&j&/span&&span class=&p&&]&/span&&span class=&o&&&&/span&&span class=&mi&&0&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&max&/span&&span class=&o&&&&/span&&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&][&/span&&span class=&n&&j&/span&&span class=&p&&])&/span&
&span class=&p&&{&/span&
&span class=&n&&max&/span& &span class=&o&&=&/span& &span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&][&/span&&span class=&n&&j&/span&&span class=&p&&];&/span&
&span class=&n&&oldTail_i&/span& &span class=&o&&=&/span& &span class=&n&&i&/span&&span class=&p&&;&/span&
&span class=&n&&oldTail_j&/span& &span class=&o&&=&/span& &span class=&n&&j&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&][&/span&&span class=&n&&j&/span&&span class=&p&&]&/span&&span class=&o&&==&/span&&span class=&mi&&2&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&n&&oldHead_i&/span& &span class=&o&&=&/span& &span class=&n&&i&/span&&span class=&p&&;&/span&
&span class=&n&&oldHead_j&/span& &span class=&o&&=&/span& &span class=&n&&j&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&p&&}&/span&
&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&oldTail_i&/span&&span class=&p&&][&/span&&span class=&n&&oldTail_j&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&&span class=&p&&;&/span&
&span class=&kt&&int&/span& &span class=&n&&newHead_i&/span&&span class=&p&&,&/span&&span class=&n&&newHead_j&/span&&span class=&p&&;&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&moveDirection&/span&&span class=&o&&==&/span&&span class=&mi&&1&/span&&span class=&p&&)&/span& &span class=&c1&&// 向上移动&/span&
&span class=&p&&{&/span&
&span class=&n&&newHead_i&/span& &span class=&o&&=&/span& &span class=&n&&oldHead_i&/span&&span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&n&&newHead_j&/span& &span class=&o&&=&/span& &span class=&n&&oldHead_j&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&moveDirection&/span&&span class=&o&&==&/span&&span class=&mi&&2&/span&&span class=&p&&)&/span& &span class=&c1&&// 向下移动&/span&
&span class=&p&&{&/span&
&span class=&n&&newHead_i&/span& &span class=&o&&=&/span& &span class=&n&&oldHead_i&/span&&span class=&o&&+&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&n&&newHead_j&/span& &span class=&o&&=&/span& &span class=&n&&oldHead_j&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&moveDirection&/span&&span class=&o&&==&/span&&span class=&mi&&3&/span&&span class=&p&&)&/span& &span class=&c1&&// 向左移动&/span&
&span class=&p&&{&/span&
&span class=&n&&newHead_i&/span& &span class=&o&&=&/span& &span class=&n&&oldHead_i&/span&&span class=&p&&;&/span&
&span class=&n&&newHead_j&/span& &span class=&o&&=&/span& &span class=&n&&oldHead_j&/span&&span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&moveDirection&/span&&span class=&o&&==&/span&&span class=&mi&&4&/span&&span class=&p&&)&/span& &span class=&c1&&// 向右移动&/span&
&span class=&p&&{&/span&
&span class=&n&&newHead_i&/span& &span class=&o&&=&/span& &span class=&n&&oldHead_i&/span&&span class=&p&&;&/span&
&span class=&n&&newHead_j&/span& &span class=&o&&=&/span& &span class=&n&&oldHead_j&/span&&span class=&o&&+&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&c1&&// 是否小蛇和自身撞,或者和边框撞,游戏失败&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&newHead_i&/span&&span class=&p&&][&/span&&span class=&n&&newHead_j&/span&&span class=&p&&]&/span&&span class=&o&&&&/span&&span class=&mi&&0&/span& &span class=&o&&||&/span& &span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&newHead_i&/span&&span class=&p&&][&/span&&span class=&n&&newHead_j&/span&&span class=&p&&]&/span&&span class=&o&&==-&/span&&span class=&mi&&1&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&n&&printf&/span&&span class=&p&&(&/span&&span class=&s&&&游戏失败!&/span&&span class=&se&&\n&/span&&span class=&s&&&&/span&&span class=&p&&);&/span&
&span class=&n&&exit&/span&&span class=&p&&(&/span&&span class=&mi&&0&/span&&span class=&p&&);&/span&
&span class=&p&&}&/span&
&span class=&k&&else&/span&
&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&newHead_i&/span&&span class=&p&&][&/span&&span class=&n&&newHead_j&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&/code&&/pre&&/div&&p&&br&&/p&&h2&5 吃食物增加长度&/h2&&p&增加食物,二维数组canvas[High][Width]元素值为-2时,输出食物数值’F’,如图所示。当蛇头碰到食物时,长度加一。&/p&&p&&br&&/p&&figure&&img src=&https://pic1.zhimg.com/v2-d8b1ca3f48349e1cfa72d48_b.jpg& data-rawwidth=&219& data-rawheight=&300& class=&content_image& width=&219&&&/figure&&p&实现思路和2中小蛇移动类似,只需保持原蛇尾,不将最大值变为0即可,下图为小蛇向上移动吃到食物的对应流程。&/p&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-233cabb4d03b4baef864d7e1c449e148_b.jpg& data-rawwidth=&554& data-rawheight=&101& class=&origin_image zh-lightbox-thumb& width=&554& data-original=&https://pic3.zhimg.com/v2-233cabb4d03b4baef864d7e1c449e148_r.jpg&&&/figure&&div class=&highlight&&&pre&&code class=&language-c&&&span&&/span&&span class=&cp&&#include&/span& &span class=&cpf&&&stdio.h&&/span&&span class=&cp&&&/span&
&span class=&cp&&#include&/span& &span class=&cpf&&&stdlib.h&&/span&&span class=&cp&&&/span&
&span class=&cp&&#include&/span& &span class=&cpf&&&conio.h&&/span&&span class=&cp&&&/span&
&span class=&cp&&#include&/span& &span class=&cpf&&&windows.h&&/span&&span class=&cp&&&/span&
&span class=&cp&&#define High 20
&/span&&span class=&c1&&// 游戏画面尺寸&/span&
&span class=&cp&&#define Width 30&/span&
&span class=&c1&&// 全局变量&/span&
&span class=&kt&&int&/span& &span class=&n&&moveDirection&/span&&span class=&p&&;&/span& &span class=&c1&&// 小蛇移动位置,上下左右分别用1,2,3,4表示&/span&
&span class=&kt&&int&/span& &span class=&n&&food_x&/span&&span class=&p&&,&/span&&span class=&n&&food_y&/span&&span class=&p&&;&/span& &span class=&c1&&// 食物的位置&/span&
&span class=&kt&&int&/span& &span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&High&/span&&span class=&p&&][&/span&&span class=&n&&Width&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&p&&{&/span&&span class=&mi&&0&/span&&span class=&p&&};&/span& &span class=&c1&&// 二维数组存储游戏画布中对应的元素&/span&
&span class=&c1&&// 0为空格0,-1为边框#,-2为食物F,1为蛇头@,大于1的正数为蛇身*&/span&
&span class=&kt&&void&/span& &span class=&nf&&gotoxy&/span&&span class=&p&&(&/span&&span class=&kt&&int&/span& &span class=&n&&x&/span&&span class=&p&&,&/span&&span class=&kt&&int&/span& &span class=&n&&y&/span&&span class=&p&&)&/span&
&span class=&c1&&//光标移动到(x,y)位置&/span&
&span class=&p&&{&/span&
&span class=&n&&HANDLE&/span& &span class=&n&&handle&/span& &span class=&o&&=&/span& &span class=&n&&GetStdHandle&/span&&span class=&p&&(&/span&&span class=&n&&STD_OUTPUT_HANDLE&/span&&span class=&p&&);&/span&
&span class=&n&&COORD&/span& &span class=&n&&pos&/span&&span class=&p&&;&/span&
&span class=&n&&pos&/span&&span class=&p&&.&/span&&span class=&n&&X&/span& &span class=&o&&=&/span& &span class=&n&&x&/span&&span class=&p&&;&/span&
&span class=&n&&pos&/span&&span class=&p&&.&/span&&span class=&n&&Y&/span& &span class=&o&&=&/span& &span class=&n&&y&/span&&span class=&p&&;&/span&
&span class=&n&&SetConsoleCursorPosition&/span&&span class=&p&&(&/span&&span class=&n&&handle&/span&&span class=&p&&,&/span&&span class=&n&&pos&/span&&span class=&p&&);&/span&
&span class=&p&&}&/span&
&span class=&c1&&// 移动小蛇&/span&
&span class=&c1&&// 第一步扫描数组canvas所有元素,找到正数元素都+1&/span&
&span class=&c1&&// 找到最大元素(即蛇尾巴),把其变为0&/span&
&span class=&c1&&// 找到=2的元素(即蛇头),再根据输出的上下左右方向,把对应的另一个像素值设为1(新蛇头)&/span&
&span class=&kt&&void&/span& &span class=&nf&&moveSnakeByDirection&/span&&span class=&p&&()&/span&
&span class=&p&&{&/span&
&span class=&kt&&int&/span& &span class=&n&&i&/span&&span class=&p&&,&/span&&span class=&n&&j&/span&&span class=&p&&;&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&i&/span&&span class=&o&&=&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&&span class=&n&&i&/span&&span class=&o&&&&/span&&span class=&n&&High&/span&&span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&&span class=&n&&i&/span&&span class=&o&&++&/span&&span class=&p&&)&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&j&/span&&span class=&o&&=&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&&span class=&n&&j&/span&&span class=&o&&&&/span&&span class=&n&&Width&/span&&span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&&span class=&n&&j&/span&&span class=&o&&++&/span&&span class=&p&&)&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&][&/span&&span class=&n&&j&/span&&span class=&p&&]&/span&&span class=&o&&&&/span&&span class=&mi&&0&/span&&span class=&p&&)&/span&
&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&][&/span&&span class=&n&&j&/span&&span class=&p&&]&/span&&span class=&o&&++&/span&&span class=&p&&;&/span&
&span class=&kt&&int&/span& &span class=&n&&oldTail_i&/span&&span class=&p&&,&/span&&span class=&n&&oldTail_j&/span&&span class=&p&&,&/span&&span class=&n&&oldHead_i&/span&&span class=&p&&,&/span&&span class=&n&&oldHead_j&/span&&span class=&p&&;&/span&
&span class=&kt&&int&/span& &span class=&n&&max&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&&span class=&p&&;&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&i&/span&&span class=&o&&=&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&&span class=&n&&i&/span&&span class=&o&&&&/span&&span class=&n&&High&/span&&span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&&span class=&n&&i&/span&&span class=&o&&++&/span&&span class=&p&&)&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&j&/span&&span class=&o&&=&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&&span class=&n&&j&/span&&span class=&o&&&&/span&&span class=&n&&Width&/span&&span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&&span class=&n&&j&/span&&span class=&o&&++&/span&&span class=&p&&)&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&][&/span&&span class=&n&&j&/span&&span class=&p&&]&/span&&span class=&o&&&&/span&&span class=&mi&&0&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&max&/span&&span class=&o&&&&/span&&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&][&/span&&span class=&n&&j&/span&&span class=&p&&])&/span&
&span class=&p&&{&/span&
&span class=&n&&max&/span& &span class=&o&&=&/span& &span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&][&/span&&span class=&n&&j&/span&&span class=&p&&];&/span&
&span class=&n&&oldTail_i&/span& &span class=&o&&=&/span& &span class=&n&&i&/span&&span class=&p&&;&/span&
&span class=&n&&oldTail_j&/span& &span class=&o&&=&/span& &span class=&n&&j&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&][&/span&&span class=&n&&j&/span&&span class=&p&&]&/span&&span class=&o&&==&/span&&span class=&mi&&2&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&n&&oldHead_i&/span& &span class=&o&&=&/span& &span class=&n&&i&/span&&span class=&p&&;&/span&
&span class=&n&&oldHead_j&/span& &span class=&o&&=&/span& &span class=&n&&j&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&p&&}&/span&
&span class=&kt&&int&/span& &span class=&n&&newHead_i&/span&&span class=&p&&,&/span&&span class=&n&&newHead_j&/span&&span class=&p&&;&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&moveDirection&/span&&span class=&o&&==&/span&&span class=&mi&&1&/span&&span class=&p&&)&/span& &span class=&c1&&// 向上移动&/span&
&span class=&p&&{&/span&
&span class=&n&&newHead_i&/span& &span class=&o&&=&/span& &span class=&n&&oldHead_i&/span&&span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&n&&newHead_j&/span& &span class=&o&&=&/span& &span class=&n&&oldHead_j&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&moveDirection&/span&&span class=&o&&==&/span&&span class=&mi&&2&/span&&span class=&p&&)&/span& &span class=&c1&&// 向下移动&/span&
&span class=&p&&{&/span&
&span class=&n&&newHead_i&/span& &span class=&o&&=&/span& &span class=&n&&oldHead_i&/span&&span class=&o&&+&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&n&&newHead_j&/span& &span class=&o&&=&/span& &span class=&n&&oldHead_j&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&moveDirection&/span&&span class=&o&&==&/span&&span class=&mi&&3&/span&&span class=&p&&)&/span& &span class=&c1&&// 向左移动&/span&
&span class=&p&&{&/span&
&span class=&n&&newHead_i&/span& &span class=&o&&=&/span& &span class=&n&&oldHead_i&/span&&span class=&p&&;&/span&
&span class=&n&&newHead_j&/span& &span class=&o&&=&/span& &span class=&n&&oldHead_j&/span&&span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&moveDirection&/span&&span class=&o&&==&/span&&span class=&mi&&4&/span&&span class=&p&&)&/span& &span class=&c1&&// 向右移动&/span&
&span class=&p&&{&/span&
&span class=&n&&newHead_i&/span& &span class=&o&&=&/span& &span class=&n&&oldHead_i&/span&&span class=&p&&;&/span&
&span class=&n&&newHead_j&/span& &span class=&o&&=&/span& &span class=&n&&oldHead_j&/span&&span class=&o&&+&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&c1&&// 新蛇头如果吃到食物&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&newHead_i&/span&&span class=&p&&][&/span&&span class=&n&&newHead_j&/span&&span class=&p&&]&/span&&span class=&o&&==-&/span&&span class=&mi&&2&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&food_x&/span&&span class=&p&&][&/span&&span class=&n&&food_y&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&&span class=&p&&;&/span&
&span class=&c1&&// 产生一个新的食物&/span&
&span class=&n&&food_x&/span& &span class=&o&&=&/span& &span class=&n&&rand&/span&&span class=&p&&()&/span&&span class=&o&&%&/span&&span class=&p&&(&/span&&span class=&n&&High&/span&&span class=&o&&-&/span&&span class=&mi&&5&/span&&span class=&p&&)&/span& &span class=&o&&+&/span& &span class=&mi&&2&/span&&span class=&p&&;&/span&
&span class=&n&&food_y&/span& &span class=&o&&=&/span& &span class=&n&&rand&/span&&span class=&p&&()&/span&&span class=&o&&%&/span&&span class=&p&&(&/span&&span class=&n&&Width&/span&&span class=&o&&-&/span&&span class=&mi&&5&/span&&span class=&p&&)&/span& &span class=&o&&+&/span& &span class=&mi&&2&/span&&span class=&p&&;&/span&
&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&food_x&/span&&span class=&p&&][&/span&&span class=&n&&food_y&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&o&&-&/span&&span class=&mi&&2&/span&&span class=&p&&;&/span&
&span class=&c1&&// 原来的旧蛇尾留着,长度自动+1&/span&
&span class=&p&&}&/span&
&span class=&k&&else&/span& &span class=&c1&&// 否则,原来的旧蛇尾减掉,保持长度不变&/span&
&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&oldTail_i&/span&&span class=&p&&][&/span&&span class=&n&&oldTail_j&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&&span class=&p&&;&/span&
&span class=&c1&&// 是否小蛇和自身撞,或者和边框撞,游戏失败&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&newHead_i&/span&&span class=&p&&][&/span&&span class=&n&&newHead_j&/span&&span class=&p&&]&/span&&span class=&o&&&&/span&&span class=&mi&&0&/span& &span class=&o&&||&/span& &span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&newHead_i&/span&&span class=&p&&][&/span&&span class=&n&&newHead_j&/span&&span class=&p&&]&/span&&span class=&o&&==-&/span&&span class=&mi&&1&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&n&&printf&/span&&span class=&p&&(&/span&&span class=&s&&&游戏失败!&/span&&span class=&se&&\n&/span&&span class=&s&&&&/span&&span class=&p&&);&/span&
&span class=&n&&Sleep&/span&&span class=&p&&(&/span&&span class=&mi&&2000&/span&&span class=&p&&);&/span&
&span class=&n&&system&/span&&span class=&p&&(&/span&&span class=&s&&&pause&&/span&&span class=&p&&);&/span&
&span class=&n&&exit&/span&&span class=&p&&(&/span&&span class=&mi&&0&/span&&span class=&p&&);&/span&
&span class=&p&&}&/span&
&span class=&k&&else&/span&
&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&newHead_i&/span&&span class=&p&&][&/span&&span class=&n&&newHead_j&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&kt&&void&/span& &span class=&nf&&startup&/span&&span class=&p&&()&/span& &span class=&c1&&// 数据初始化&/span&
&span class=&p&&{&/span&
&span class=&kt&&int&/span& &span class=&n&&i&/span&&span class=&p&&,&/span&&span class=&n&&j&/span&&span class=&p&&;&/span&
&span class=&c1&&// 初始化边框&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&i&/span&&span class=&o&&=&/span&&span class=&mi&&0&/span&&span class=&p&&;&/span&&span class=&n&&i&/span&&span class=&o&&&&/span&&span class=&n&&High&/span&&span class=&p&&;&/span&&span class=&n&&i&/span&&span class=&o&&++&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&][&/span&&span class=&mi&&0&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&][&/span&&span class=&n&&Width&/span&&span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&j&/span&&span class=&o&&=&/span&&span class=&mi&&0&/span&&span class=&p&&;&/span&&span class=&n&&j&/span&&span class=&o&&&&/span&&span class=&n&&Width&/span&&span class=&p&&;&/span&&span class=&n&&j&/span&&span class=&o&&++&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&mi&&0&/span&&span class=&p&&][&/span&&span class=&n&&j&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&High&/span&&span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&][&/span&&span class=&n&&j&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&c1&&// 初始化蛇头位置&/span&
&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&High&/span&&span class=&o&&/&/span&&span class=&mi&&2&/span&&span class=&p&&][&/span&&span class=&n&&Width&/span&&span class=&o&&/&/span&&span class=&mi&&2&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&c1&&// 初始化蛇身,画布中元素值分别为2,3,4,5....&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&i&/span&&span class=&o&&=&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&&span class=&n&&i&/span&&span class=&o&&&=&/span&&span class=&mi&&4&/span&&span class=&p&&;&/span&&span class=&n&&i&/span&&span class=&o&&++&/span&&span class=&p&&)&/span&
&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&High&/span&&span class=&o&&/&/span&&span class=&mi&&2&/span&&span class=&p&&][&/span&&span class=&n&&Width&/span&&span class=&o&&/&/span&&span class=&mi&&2&/span&&span class=&o&&-&/span&&span class=&n&&i&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&n&&i&/span&&span class=&o&&+&/span&&span class=&mi&&1&/span&&span class=&p&&;&/span&
&span class=&c1&&// 初始小蛇向右移动&/span&
&span class=&n&&moveDirection&/span& &span class=&o&&=&/span& &span class=&mi&&4&/span&&span class=&p&&;&/span&
&span class=&n&&food_x&/span& &span class=&o&&=&/span& &span class=&n&&rand&/span&&span class=&p&&()&/span&&span class=&o&&%&/span&&span class=&p&&(&/span&&span class=&n&&High&/span&&span class=&o&&-&/span&&span class=&mi&&5&/span&&span class=&p&&)&/span& &span class=&o&&+&/span& &span class=&mi&&2&/span&&span class=&p&&;&/span&
&span class=&n&&food_y&/span& &span class=&o&&=&/span& &span class=&n&&rand&/span&&span class=&p&&()&/span&&span class=&o&&%&/span&&span class=&p&&(&/span&&span class=&n&&Width&/span&&span class=&o&&-&/span&&span class=&mi&&5&/span&&span class=&p&&)&/span& &span class=&o&&+&/span& &span class=&mi&&2&/span&&span class=&p&&;&/span&
&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&food_x&/span&&span class=&p&&][&/span&&span class=&n&&food_y&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&o&&-&/span&&span class=&mi&&2&/span&&span class=&p&&;&/span&
&span class=&p&&}&/span&
&span class=&kt&&void&/span& &span class=&nf&&show&/span&&span class=&p&&()&/span&
&span class=&c1&&// 显示画面&/span&
&span class=&p&&{&/span&
&span class=&n&&gotoxy&/span&&span class=&p&&(&/span&&span class=&mi&&0&/span&&span class=&p&&,&/span&&span class=&mi&&0&/span&&span class=&p&&);&/span&
&span class=&c1&&// 光标移动到原点位置,以下重画清屏&/span&
&span class=&kt&&int&/span& &span class=&n&&i&/span&&span class=&p&&,&/span&&span class=&n&&j&/span&&span class=&p&&;&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&i&/span&&span class=&o&&=&/span&&span class=&mi&&0&/span&&span class=&p&&;&/span&&span class=&n&&i&/span&&span class=&o&&&&/span&&span class=&n&&High&/span&&span class=&p&&;&/span&&span class=&n&&i&/span&&span class=&o&&++&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&j&/span&&span class=&o&&=&/span&&span class=&mi&&0&/span&&span class=&p&&;&/span&&span class=&n&&j&/span&&span class=&o&&&&/span&&span class=&n&&Width&/span&&span class=&p&&;&/span&&span class=&n&&j&/span&&span class=&o&&++&/span&&span class=&p&&)&/span&
&span class=&p&&{&/span&
&span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&][&/span&&span class=&n&&j&/span&&span class=&p&&]&/span&&span class=&o&&==&/span&&span class=&mi&&0&/span&&span class=&p&&)&/span&
&span class=&n&&printf&/span&&span class=&p&&(&/span&&span class=&s&&& &&/span&&span class=&p&&);&/span&
&span class=&c1&&//
输出空格&/span&
&span class=&k&&else&/span& &span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&][&/span&&span class=&n&&j&/span&&span class=&p&&]&/span&&span class=&o&&==-&/span&&span class=&mi&&1&/span&&span class=&p&&)&/span&
&span class=&n&&printf&/span&&span class=&p&&(&/span&&span class=&s&&&#&&/span&&span class=&p&&);&/span&
&span class=&c1&&//
输出边框#&/span&
&span class=&k&&else&/span& &span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&canvas&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&][&/span&&span class=&n&&j&/span&&span class=&p&&]&/span&&span class=&o&&==&/span&&span class=&mi&&1&/span&&span class=&p&&)&/span&
&span class=&n&&printf&/span&&span class=&p&&(&/span&&span class=&s&&&@&&/span&&span class=&p&&);&/span&
&span class=&c1&&//
输出蛇头@&/span&
&span class=&k&&else&/span& &span class=&k&&if&/span& &span class=&p&&(&/span&&span class=&n&&canvas&/span&&span class=&p&&[&/span&

我要回帖

更多关于 js五子棋获胜方法 的文章

 

随机推荐