vb贪吃蛇代码码中我看到下面这处初始化蛇身的函数就懵了,还望高手指教!

细致的C语言写贪吃蛇教程+详细思路-适合新手附源码 - 简书
细致的C语言写贪吃蛇教程+详细思路-适合新手附源码
#史上最详细的C语言贪吃蛇教程
在有用C写贪吃蛇的一个想法之后,上网查了几个教程,觉得不是很能看懂。恩。。。或者说不是一下子就能看出来思路+具体怎么实现。所以,我花了早自习的时间想了想如何用最简单的方法实现,晚上大约两个小时写了出来。别说我用两小时装逼,有了思路之后就是码代码和查细节的问题。
PS:这里补充说一下C语言写的控制台游戏的原理是什么,知道的同学直接跳过这一段。实际上就是不断的用system("cls");清除屏幕再重新打印不一样的内容,在速度较快的时候就会有一种动画效果了,当然这是控制台,就没法究美观了(可以改一下控制台字体和背景颜色相对好看一点,具体百度),晃眼睛也是肯定的。
如图(中间有一点空白gif抓取的时候没抓到请忽略):
源代码已经放在了github上感兴趣的可以参考一下(顺便star一下看官们)
我们开始说思路。
我们需要一张地图,中间是空的四周有墙体。
我们需要一条蛇,这条蛇由蛇头和蛇身组成。
我们需要食物,并且在蛇吃掉食物之后将蛇的身体变长,而且重新生成一个食物。
蛇需要移动,这应该是最难实现的。
蛇撞到墙或者撞到自己的身体就会死亡。
我们需要能用键盘控制蛇的运动方向,这个会和蛇的移动有一些联系。
Balabala我们有这么一大堆问题,我们来想想应该如何用代码实现。
整个地图我们用一个坐标系建立起来,这用一个二维字符数组就能实现了,然后我们的蛇和食物只需要将中间的空格改成蛇的头或者身体或者食物的样子就行了。
这条蛇应该如何描述,我们先区分蛇头和蛇的身体,然后一组坐标来将这个蛇的头、头后面第一节、第二节、第三节。。。。以此类推。我现在是2050的地图,所以我用一个snake[1000][3]来描述,这里面的1000是2050就是现在有1000个空(假如有人就玩到将整个地图霸占了呢)坐标,snake[i][0]的值用来描述这个坐标是头·snake[i][0]=1还是身体snake[i][0]=0,然后snake[i][1] snake[i][2]分别用来描述所在的X坐标和Y坐标(i表示某一节)。这样我们就用一个数组将蛇描述出来了,在后面我们生成视图的时候将该点的空格换成'#'或者'@'就好了。
生成食物我们需要产生随机数作为食物的坐标,而且这个随机数要在一定的范围内不能在围墙上,也不能和蛇的坐标一样。生成随机数用
srand(time(0));
int a = rand()%10+1;
这样我们就能得到1-10的数,这里的srand(time(0));初始化一下时间函数,然后rand会给我们一个很大的秒数,这个秒数在不断的变化,%10之后得到的数就在0-9,然后+1得到1-10的数。根据这个原理,生成一个在固定范围内的X坐标和Y坐标,然后用这个x坐标和y坐标去遍历snake数组看看x、y会不会同时相同,如果相同就重新生成一个知道不相同为止。这样我们就生成了一个食物的坐标。
蛇的移动,就是不断的变化那个坐标集合,我们将蛇头移动到下一个坐标之后,后面的节一次覆盖前一个就完成了一个单位的移动。这样的话,我们的方向只需要对蛇头作用就行了。现在我们设定一个direct=1即向上,direct的值1/2/3/4分别代表上下左右。现在蛇向上走,蛇头向上的话,X不变,Y-1就好了。
(注意我们这里的坐标系是类似数学上第四象限的坐标系,所以X轴在最上面。)
然后我们将第二个节换成前一次蛇头所在的坐标,第三个坐标变成前一次第二个的坐标,以此类推,蛇就往前移动了一个单位。
蛇头撞到墙或者撞到自己的身体,我们只需要判断蛇头的坐标是否和墙的坐标重合或者和蛇的某一节重合。所以在蛇移动之后我们用蛇头的坐标去遍历蛇自己的所有坐标并且判断蛇的X或者Y是否大于或者小于地图边界了,这样就能知道是否发生碰撞,发生碰撞之后直接break不在刷新视图就好。
当键盘有输入的时候判断是上或者下后者左或者右,然后重置direct的值,就将方向重置了。当然在向上走的时候按下键是不行的其他也是类似,所以还要判断一下。键盘读入事件我们需要用到一个函数_kbhit();如果有键盘敲击,这个函数就会返回一个非0的数。所以我们可以在每一次刷新的时候
if(_kbhit())
//有键盘敲击
ch = _getchar();
switch(ch)
//判断用户按下了哪个键
//按下键盘的上键_getchar()得到的是H
//可以自己写一个程序看看上下左右分别是哪几个字符然后用来判断就行了
if(direct!=2)
//如果当前的方向不是向下
就将方向重新定义为向上 其他的类似
这样我们就通过读取键盘重新设置了方向。
这些问题我们都一一解决了,现在我们来想一下程序运行的顺序是什么。
1)初始化,将地图造出来。
2)如果有键盘输入的话,就重新设置运动方向。
3)制造食物。
4)让蛇移动,如果吃掉食物就重新生成一个食物,如果会死亡就break。
5)用蛇的坐标将地图中的空格替换为'#'和'@',将食物所在的坐标设置为'O'。
6)输出视图,即将最终生成的地图打印出来。
7)Sleep(200) 暂停200毫秒之后在进行上面的。
我们将上面这些都放在一个while(1)循环里面,只有死了才会跳出循环不在清屏打印(清屏打印其实就是刷新视图),然后输出游戏结束得分就好。
#将上述的代码实现方法写成一个一个函数,然后按照顺序放在循环体,就完成了贪吃蛇的制作。
#理解思路,模仿一下代码,写一个你自己的贪吃蛇,并且自己DIY一点其他的小创意,动手折腾吧。
我叫掏粪,如果喜喜欢我的文章请点个喜欢~欢迎关注我的的博客和新浪微博。
一个逗比理科生,固执的技术直男,不折腾会死星人。
微信公众号:iimT
我的微博 : @_iimT
个人博客:http://www.iimt.me
[c]代码库 #include #include #include #include #include /// 游戏活动区域 #define GAME_W 20 #define GAME_H 14 /// 方向 #define UP 72 #define DOWN 80 #...
##Java小游戏之贪吃蛇 贪吃蛇是一款经典的益智游戏,既简单又耐玩,游戏通过控制蛇的方向来吃蛋,获得分数的同时也让蛇变得越来越长。 ###制作游戏窗口 要做一个游戏,首先得有一个窗口,在Java中可以通过继承JFrame类来定制一个带边框的窗口,继承是从一个已有的类创建新...
1. 游戏设计与数据设计 感谢您选择pyera,如果有任何问题想反馈和讨论可以加群:py/era 技术吹水群 完整贪吃蛇代码参考:https://github.com/qsjl11/pyera_snake 贪吃蛇是一款家喻户晓的游戏,因为游戏系统非常简单,...
贪吃蛇是众多90后小时候玩过的一款经典手游,但是在程序员眼中则是几页代码的编辑,代码里所涉及的内容也比较简单,下面我就为大家简单介绍一下贪吃蛇事件。 涉及内容
主要为构造函数及其原型的应用,游戏框架是由表格和数组通过构造函数书写的js结构即为游戏引擎部分。 事...
前天犯贱登录了骗子的苹果ID, 结果自己的ipad被骗子远程锁定了, 如今变砖头, 心情很down, 故参考网友的思路自己手撸一个贪食蛇(简直班门弄斧). 先上游戏效果图如下, 界面和诺基亚时代的贪食蛇差不多: 这里简单说下思路, 文章最后贴上我的源码github下载地址,...
介绍: 禅修界的神书《Mastering the core Teachings of the Buddha》—— 一本讲真话的禅修完全攻略。这本书还没有在中国登陆,所以许多朋友想获取更多信息却没有途径。幸运的是,小魔今年接下了此书的翻译工作,出版之前,给你带来秘密的独家的先...
《阿狸·旋木花园》 这本书是去年生日的时候,朋友毛毛送的礼物,很久不看绘本了,记得上一次还是看几米的《星空》,变成大人后,人们问为什么的次数越来越少,似乎是因为我们知道的越来越多,可是流星为什么不能飞得慢一点,打开电梯门为什么眼前不能出现一片金色麦田,我们为什么不能养一朵云...
短线龙头:市值小 容易炒作做标杆。 注意:小市值能否炒得动,关键看主帅是否炒得动。—— 盘子小,涨幅最大,对于散户来说最有价值,所以散户以为他是龙头; 但是对于大资金,小盘容纳的资金有限,获得的绝对利润也就有限,只能当做先锋。所以:大资金、大容量才是主帅。如果主帅炒不动了,...
片段来自同组小伙伴钟慰 I: 人们通常更喜欢有点小缺点的好人,这是我2014年学习心理咨询师时就知道的观点,一直以来都被我用来在自己做的不太好、或者犯小错误的时候用以自我安慰。 毕竟,完美这东西是不存在的,如果要保持完美形象,必然要保持一定的距离(华丽的袍子上看不到虱子,就...小弟初学VC 想做一个贪吃蛇的小游戏,但蛇和食物相遇的情况老是出错,恳请各位前辈帮帮忙!
[问题点数:40分]
本版专家分:0
结帖率 28.57%
CSDN今日推荐
本版专家分:369075
2017年 总版技术专家分年内排行榜第一
2014年 总版技术专家分年内排行榜第二
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
本版专家分:1227
本版专家分:3056
本版专家分:7661
2010年7月 C/C++大版内专家分月排行榜第二
本版专家分:2
本版专家分:41194
2013年2月 C/C++大版内专家分月排行榜第二
2013年3月 C/C++大版内专家分月排行榜第三
本版专家分:23
本版专家分:0
本版专家分:7661
2010年7月 C/C++大版内专家分月排行榜第二
本版专家分:7661
2010年7月 C/C++大版内专家分月排行榜第二
匿名用户不能发表回复!|
其他相关推荐贪吃蛇游戏 C语言程序设计
《计算机程序设计》课程设计报告
课 题 名 称
贪吃蛇游戏
1 需求分析... 1
2 系统分析和设计... 1
2.1 数据结构的设计和选择的理由... 1
2.2 系统模块划分和模块结构... 2
2.3 流程图... 3
2.4 数据类型、全局变量和函数说明... 3
3 程序测试和运行结果... 4
4 课程报告小结... 5
4.1分数重叠显示... 5
4.2速度太快... 5
4.3食物可能出现在蛇身上... 5
附录A:程序源代码... 6
1 需求分析
【阐述课程设计应该完成的功能】
使用键盘的上下左右,来控制蛇的运动方向,ESC键退出,并显示得分。
2 系统分析和设计
2.1 数据结构的设计和选择的理由
本游戏中涉及的主要数据结构是如何表示运动的蛇、食物状态等问题。2.1.1 从游戏参考画面中我们可以看到,贪吃蛇的身体是一节节的,由一个个大小相同的方块组成,那么我们可以用一个(x,y)坐标为左上角的、固定宽度的正方形来表示一节蛇身。为表示连续的多节身体,那么我们可以采用数组(或链表,或线性表)等数据结构来表示。下面以数组方式为例:
struct Point {
struct Point nodes[MAX_LENGTH];
//蛇身数组,MAX_LENGTH为最大蛇长
贪吃蛇是在不断的运动的,我们研究蛇的运动可以发现这样的特点:
1. 蛇头由键盘控制,键盘不操作时,保持原有方向运动;(用表示)
2. 运动时,蛇身后面一节移动到前面一节的位置。当我们用nodes[0]表示蛇头的时候,nodes[1]运动到nodes[0]处;nodes[2]运动到nodes[1]处...。
3. 吃到一个食物以后,蛇身会增加一节。即该数组中的有效数据个数加一。(用表示)
根据上面的情况,我们可以设计蛇的数据结构如下:
struct Snake {
struct Point nodes[MAX_LENGTH];
//蛇身数组,保存每节蛇身的坐标。MAX_LENGTH为最大蛇长
//当前蛇长
//蛇头运动方向
//蛇活的,还是已经死了?
}2.1.2 关于食物,有两个属性:
1. 坐标位置
2. 状态:存在,或被吃。
故我们用以下结构表示:
struct Food {
//食物的位置
//存在?还是被吃?
2.2 系统模块划分和模块结构
void main() {
/*初始化*/
/*循环游戏*/
/*游戏速度和结束的选择菜单*/
gamePlay();
/*游戏主程序*/
/*关闭游戏*/
2.3 流程图
2.4 数据类型、全局变量和函数说明
2.4.1数据类型
struct Point {
/*一个存放点坐标的结构体*/
/*被多个结构体调用的基本参数,所以统一用point结构体来表示*/
struct Snake {
/*用来模拟蛇状态的结构体*/
structPoint nodes[MAX_LENGTH];
/*用来存放蛇每一节的位置*/
/*蛇移动的方向*/
/*蛇是否活着*/
/*比较形象的把蛇抽象为一个数据类型*/
struct Food {
/*用来模拟食物状态的结构体*/
/*食物的位置*/
/*食物是否存在*/
2.4.2全局变量
left,top,right,bottom
\\游戏区域范围
lastx,lasty
\\用来保存最后一节蛇的位置
\\用来保存按下的键
2.4.3函数说明
void init(void);
\\初始化程序,给一些初始值赋值
void gamePlay(void);
\\游戏主循环
void close(void);
\\关闭游戏
void drawWall(void);
void createFood(void);
\\创造一个食物
void drawFood(void);
\\画出食物
void drawSnake(void);
void drawScore(void);
\\画出分数
int touchWall(void);
\\判断是否碰到墙
int touchSelf(void);
\\判断是否碰到自己
void gameOver(void);
\\游戏结束
void moveSnake(void);
int oppositeDirection(int keyCode);
\\判断是否方向有误
int foodEat(void);
\\判断是否吃到食物
void expandSnake(void);
\\把蛇增长一节
3 程序测试和运行结果
----------------------------------------------------------------------------选择速度开始或退出
----------------------------------------------------------------------------------------游戏运行中
--------------------------------------------------------------------------------------------------------游戏结束
4 课程报告小结
【遇到的问题及解决方法分析等】
4.1分数重叠显示
解决方法:每次都用一块黑的矩形覆盖
setfillstyle(1,16);
bar(45,45,150,80);
4.2速度太快
解决方法:循环delay
for(d=0;d&4;d++)
delay(GAME_SPEED);
4.3食物可能出现在蛇身上
解决方法:依次判断,若重叠则重新生成食物
void createFood() {
food.position.x=left+10*((int)rand()%11);
food.position.y=top+10*((int)rand()%11);
for(i=0;i&=snake.length-1;i++){
if(snake.nodes[i].x==food.position.x&&snake.nodes[i].y==food.position.y)
附录A:程序源代码
#include&graphics.h&
#include&stdlib.h&
#include&time.h&
#include&stdio.h&
#include&dos.h&
#include&conio.h&
#include&bios.h&
#define TRUE 1
#define FALSE 0
#define UP0x4800
#define DOWN0x5000
#define LEFT0x4B00
#define RIGHT0x4D00
#define ESC0x011B
#define SPEED10x0231
#define SPEED20x0332
#define SPEED30x0433
#defineQUIT
#define ENTER 0x1C0D
#defineMAX_LENGTH 100
/* max length ofsnake nodess */
#defineGAME_SPEED 100
/* game speed */
/* datastructure */
struct Point {
struct Snake {
struct Pointnodes[MAX_LENGTH];
struct Food {
intscore=0,max,max1,max2,max3,left=200,top=200,right=300,bottom=300,lastx,lasty,keyCode,keyCode2,sp,l,sel,times=1;
char text[80];
/* functionsdeclaration */
void init(void);
voidgamePlay(void);
voidclose(void);
voiddrawWall(void);
voidcreateFood(void);
voiddrawFood(void);
voiddrawSnake(void);
voiddrawScore(void);
inttouchWall(void);
inttouchSelf(void);
voidgameOver(void);
void moveSnake(void);
intoppositeDirection(int keyCode);
intfoodEat(void);
voidexpandSnake(void);
voidselect(void);
/*------------------------*/
void main() {
gamePlay();
void init() {
int gdriver=VGA ,gmode=VGAHI ;
snake.nodes[0].x=250;
snake.nodes[0].y=250;
snake.nodes[1].x=250;
snake.nodes[1].y=260;
snake.length=2;
snake.live=1;
snake.direction=UP;
food.exist=0;
initgraph(&gdriver,&gmode,"C:\\tc20\\BGI");
randomize();/*sui ji shu fa sheng qi*/
drawWall();
void close() {
closegraph();
if((fp=fopen("data.txt","w"))==NULL)
/*关闭时保存最高分*/
fprintf(fp,"%d,%d,%d",max1,max2,max3);
fclose(fp);
printf("pessany key to continue");
gamePlay() {
int keyCode,d;
while(TRUE) {
drawScore();
drawWall();
if(touchWall() || touchSelf()) {
gameOver();
if(!food.exist) createFood();
food.exist=1;
drawFood();
drawSnake();
for(d=0;d&d++)
delay(GAME_SPEED);
if(bioskey(1) != 0) {
keyCode= bioskey(0);
switch(keyCode){
gameOver();
lastx=snake.nodes[snake.length-1].x;
lasty=snake.nodes[snake.length-1].y;
if(!oppositeDirection(keyCode)) {
snake.direction= keyC
moveSnake();
if(foodEat()) {
food.exist= FALSE;
score+= 10;
expandSnake();
void drawWall(){
rectangle(left,top,right+10,bottom+10);
voidcreateFood() {
food.position.x=left+10*((int)rand()%11);
food.position.y=top+10*((int)rand()%11);
for(i=0;i&=snake.length-1;i++){
if(snake.nodes[i].x==food.position.x&&snake.nodes[i].y==food.position.y)
void drawFood(){
setfillstyle(1,2);
bar(food.position.x,food.position.y,food.position.x+10,food.position.y+10);
void drawSnake(){
setfillstyle(1,4);
for(j=0;j&=snake.length-1;j++)
bar(snake.nodes[j].x,snake.nodes[j].y,snake.nodes[j].x+10,snake.nodes[j].y+10);
voiddrawScore(void) {
setfillstyle(1,16);
bar(45,45,150,80);
setcolor(WHITE);
sprintf(text,"writer:neolone");
outtextxy(170,50,text);
sprintf(text,"score:%5d",score);
outtextxy(50,50,text);
int touchWall(){
int x1=snake.nodes[0].x;
int y1=snake.nodes[0].y;
if(x1&left||x1&right||y1&top||y1&bottom)
return TRUE;
return FALSE;
int touchSelf(){
for (i=3;i&snake.length-1;i++)
if(snake.nodes[0].x==snake.nodes[i].x&&snake.nodes[0].y==snake.nodes[i].y)
return TRUE;
return FALSE;
void gameOver(){
int x2,y2;
setcolor(WHITE);
sprintf(text,"Gameover !!your score is %d,%d",score,sel);
outtextxy(x2,y2,text);
delay(1000);
getch();
switch(sel%4)
if(score&max1)
if(score&max2)
if(score&max3)
void moveSnake(){
setfillstyle(1,16);
lastx=snake.nodes[snake.length-1].x;
lasty=snake.nodes[snake.length-1].y;
bar(snake.nodes[snake.length-1].x,snake.nodes[snake.length-1].y,snake.nodes[snake.length-1].x+10,snake.nodes[snake.length-1].y+10);
for(k=snake.length-2;k&=0;k--)
snake.nodes[k+1].x=snake.nodes[k].x;
snake.nodes[k+1].y=snake.nodes[k].y;
if(snake.direction==UP)
snake.nodes[0].y-=10;
else if(snake.direction==DOWN)
snake.nodes[0].y+=10;
else if(snake.direction==LEFT)
snake.nodes[0].x-=10;
else if(snake.direction==RIGHT)
snake.nodes[0].x+=10;
intoppositeDirection(int keyCode) {
if(keyCode==UP&&snake.direction==DOWN){
elseif(keyCode==DOWN&&snake.direction==UP) {
elseif(keyCode==LEFT&&snake.direction==RIGHT){
elseif(keyCode==RIGHT&&snake.direction==LEFT){
int foodEat() {
if(snake.nodes[0].x==food.position.x&&snake.nodes[0].y==food.position.y)
voidexpandSnake() {
if(keyCode==UP){
lastx-=10;
else if(keyCode==DOWN) {
lastx+=10;
else if(keyCode==LEFT){
lasty-=10;
else if(keyCode==RIGHT){
lasty+=10;
snake.nodes[snake.length].x=
snake.nodes[snake.length].y=
snake.length++;
void select()
setfillstyle(1,7);
/*实现选择速度的可视化菜单*/
bar(420,220,490,310);
setfillstyle(1,9);
bar(430,230,480,240);
setfillstyle(1,5);
setcolor(WHITE);
sprintf(text,"speed1");
outtextxy(430,230,text);
bar(430,250,480,260);
sprintf(text,"speed2");
outtextxy(430,250,text);
bar(430,270,480,280);
sprintf(text,"speed3");
outtextxy(430,270,text);
bar(430,290,480,300);
sprintf(text," quit ");
outtextxy(430,290,text);
delay(10);
if (bioskey(1) != 0) {
keyCode =bioskey(0);
switch(keyCode){
caseENTER:
switch(sel%4) {
setfillstyle(1,9);
bar(430,290,480,300);
setcolor(WHITE);
setfillstyle(1,5);
bar(430,230,480,240);
sprintf(text,"speed1");
outtextxy(430,230,text);
bar(430,250,480,260);
sprintf(text,"speed2");
outtextxy(430,250,text);
bar(430,270,480,280);
sprintf(text,"speed3");
outtextxy(430,270,text);
sprintf(text,"quit ");
outtextxy(430,290,text);
setfillstyle(1,9);
bar(430,230,480,240);
setfillstyle(1,5);
setcolor(WHITE);
sprintf(text,"speed1");
outtextxy(430,230,text);
bar(430,250,480,260);
sprintf(text,"speed2");
outtextxy(430,250,text);
bar(430,270,480,280);
sprintf(text,"speed3");
outtextxy(430,270,text);
bar(430,290,480,300);
sprintf(text,"quit ");
outtextxy(430,290,text);
setfillstyle(1,9);
bar(430,250,480,260);
setfillstyle(1,5);
bar(430,230,480,240);
setcolor(WHITE);
sprintf(text,"speed1");
outtextxy(430,230,text);
sprintf(text,"speed2");
outtextxy(430,250,text);
bar(430,270,480,280);
sprintf(text,"speed3");
outtextxy(430,270,text);
bar(430,290,480,300);
sprintf(text,"quit ");
outtextxy(430,290,text);
setfillstyle(1,9);
bar(430,270,480,280);
setfillstyle(1,5);
bar(430,230,480,240);
setcolor(WHITE);
sprintf(text,"speed1");
outtextxy(430,230,text);
bar(430,250,480,260);
sprintf(text,"speed2");
outtextxy(430,250,text);
sprintf(text,"speed3");
outtextxy(430,270,text);
bar(430,290,480,300);
sprintf(text,"quit ");
outtextxy(430,290,text);
/*ch=getch();*/
if(times==1)
/*读取历史最高分*/
if((fp=fopen("data.txt","r"))==NULL)
sprintf(text,"Can not open thefile");
fscanf(fp,"%d,%d,%d",&max1,&max2,&max3);
fclose(fp);
switch(sel%4) {
/*选择速度*/
gameOver();
sprintf(text,"Hightestscore:%d",max1);
outtextxy(50,90,text);
sprintf(text,"Hightestscore:%d",max2);
outtextxy(50,90,text);
sprintf(text,"Hightestscore:%d",max3);
outtextxy(50,90,text);
这是资源地址,源代码
纯C语言实现贪吃蛇游戏(VC6.0)
贪吃蛇程序设计报告
贪吃蛇设计
一个C语言编写的贪吃蛇游戏
用C语言设计贪吃蛇
没有更多推荐了,C语言小游戏源代码《贪吃蛇》_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
C语言小游戏源代码《贪吃蛇》
阅读已结束,下载本文需要
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩6页未读,
定制HR最喜欢的简历
你可能喜欢贪吃蛇VC课程设计毕业论文_图文_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
贪吃蛇VC课程设计毕业论文
阅读已结束,下载本文需要
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩11页未读,
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 贪吃蛇程序代码 的文章

 

随机推荐