scratch编程贪吃蛇教程
scratch编程贪吃蛇教程: 1、首先,我们新建一个项目文件。 2、我们点击添加精灵按钮。 3、在弹出的对话框中,我们选绘制角色。 4、打开画图后,我们用方块工具绘制一个蓝色的方块,并导入舞台,命名为蛇。 5、用同样的方法,添加食物和橡皮擦。 6、我们选中蛇,在代码编辑区写入以下代码。 7、选中食物,在代码编辑区写入以下代码。 8、选中橡皮擦,代码编辑区写入以下代码。 贪食蛇是一款经典的休闲游戏。有PC和手机等多平台版本,既简单又耐玩。
scratch2.0怎么制作,简单版的贪吃蛇游戏呢?
1、游戏工作过程。键盘主要控制贪吃蛇的头部移动,尾巴是沿着轨迹移动就行。贪吃蛇的身体,是用程序画笔模块画出来的。如果头部吃到食物,就给游戏分数加分。 2、创建角色:新建3个角色分别为“头部”、“尾巴”、“食物”(贪吃蛇角色的形状可以自己动手画画,但是要注意造型的中心点位置,否则身体和头尾会不一致)。 3、创建分数变量:新建一个变量,名称为“游戏分数”。用来记录吃到的食物数量,以及游戏成绩。 4、创建轨迹列表:新建3个列表,名称分别为“头部_坐标X”“头部_坐标Y”“头部_方向”。 用来记录贪吃蛇的移动轨迹,方便尾巴追随轨迹移动(将在舞台上的列表隐藏,以免影响舞台观看)。 5、编写程序 头部程序:键盘控制头部移动,画笔画下轨迹,并且列表记录头部的轨迹。 尾巴程序:按照轨迹列表移动,画笔画下背景色,保持贪吃蛇身体长度。 食物程序:碰到头部角色,代表食物被吃,改变自身位置,游戏加分。 6、最终游戏效果:点击“绿色旗子”开始游戏,按下键盘的方向键,控制贪吃蛇移动。 吃到食物时,变量“游戏分数”就会加1分。 1、游戏工作过程:键盘主要控制贪吃蛇的头部移动,尾巴是沿着轨迹移动就行。贪吃蛇的身体,是用程序画笔模块画出来的。如果头部吃到食物,就给游戏分数加分。 2、创建角色:新建3个角色分别为“头部”、“尾巴”、“食物”(贪吃蛇角色的形状可以自己动手画画,但是要注意造型的中心点位置,否则身体和头尾会不一致)。 3、创建分数变量:新建一个变量,名称为“游戏分数”。用来记录吃到的食物数量,以及游戏成绩。 4、创建轨迹列表:新建3个列表,名称分别为“头部_坐标X”“头部_坐标Y”“头部_方向”。 用来记录贪吃蛇的移动轨迹,方便尾巴追随轨迹移动(将在舞台上的列表隐藏,以免影响舞台观看)。 5、编写程序 头部程序:键盘控制头部移动,画笔画下轨迹,并且列表记录头部的轨迹。 尾巴程序:按照轨迹列表移动,画笔画下背景色,保持贪吃蛇身体长度。 食物程序:碰到头部角色,代表食物被吃,改变自身位置,游戏加分。 6、最终游戏效果:点击“绿色旗子”开始游戏,按下键盘的方向键,控制贪吃蛇移动。 吃到食物时,变量“游戏分数”就会加1分。 现在,我们来看看是怎么编的吧首先,选一个深色背景,导入蛇和苹果后,新建好变量:蛇代码: 这样,蛇头就能动了,那么蛇身体怎么办呢?用克隆就行了: 蛇吃的苹果越多,身体就越长,现在,我们来编苹果的代码我们要保证屏幕上面只能出现一个苹果,就要用到变量了: 如果食物数量等于零时,就克隆一个出来,把数量增加一,被吃了后,加一分,长度增加0.1,这样蛇就会变长,就可以玩了!
c语言贪吃蛇源代码怎么用?
C语言贪吃蛇源代码必须经过相应的C/C++编译器编译成EXE文件后才能运行。 由于我们通常使用的操作系统是Windows系统,而在该系统下最长用的C/C++编译器是VC++编译器,目前在大专院校常用的版本还是VC++6.0 下面就以VC++6.0来说明编译过程: 1.在VC++6.0中通过“File”菜单下的 “Open”子菜单打开贪吃蛇代码 2.在VC++6.0中通过“Build”菜单下的 “Compile xxxx.xx”子菜单编译贪吃蛇代码 3.在VC++6.0中通过“Build”菜单下的 “Execute xxxx.exe”子菜单运行贪吃蛇程序 附:在VC++6环境下可运行的C/C++贪吃蛇源代码(无版权,自己编写,欢迎任意修改拷贝) /*C/C++贪吃蛇游戏,zjlj,2015.3.16*/#define DEBUG 0 //当程序在调试阶段时 DEBUG为 1#include#include#include#includeusing namespace std;void readini(FILE **fphead, int *score, char *argv[]) //创建或打开一个和运行文件对应的ini文件,读取最高纪录{ char filename[200],*pfilename; int flag=-1,i; strcpy(filename,argv[0]); for(i=0;filename[i]!='\0';i++) { if ('.'==filename[i])flag=1; } if(1==flag) { filename[i-1]='i'; filename[i-2]='n'; filename[i-3]='i'; } else { filename[i]='.'; filename[i+1]='i'; filename[i+2]='n'; filename[i+3]='i'; filename[i+4]='\0'; } for(;filename[i]!='\\'&&i>=0;i--)pfilename=&filename[i]; if ( (*fphead=fopen(pfilename, "rb+"))==NULL) { if ( (*fphead=fopen(pfilename, "wb+"))==NULL) { printf("无法创建或打开\"%s\"文件\n",pfilename); system("pause"); exit(0); } } else { fread(score,sizeof(int),1,*fphead); }}void writeini(FILE **fphead, int *score, char *argv[]) //打开一个和运行文件对应的ini文件,写入最高纪录{ char filename[200],*pfilename; int flag=-1,i; strcpy(filename,argv[0]); for(i=0;filename[i]!='\0';i++) { if ('.'==filename[i])flag=1; } if(1==flag) { filename[i-1]='i'; filename[i-2]='n'; filename[i-3]='i'; } else { filename[i]='.'; filename[i+1]='i'; filename[i+2]='n'; filename[i+3]='i'; filename[i+4]='\0'; } for(;filename[i]!='\\'&&i>=0;i--)pfilename=&filename[i]; if ( (*fphead=fopen(pfilename, "wb+"))==NULL) { printf("无法写入\"%s\"文件,磁盘写保护!\n",pfilename); system("pause"); exit(0); } else { rewind(*fphead); fwrite(score,sizeof(int),1,*fphead); fclose(*fphead); }}void gotoxy(int x,int y)//光标定位,光标定位函数SetConsoleCursorPosition是左上角位置是0,0然后向左向下延伸{COORD pos;pos.X=2*y;pos.Y=x;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}void color(int a)//颜色函数{SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);}void Refresh(int q[][22], int grade, int gamespeed, int length,int score) // 输出贪吃蛇棋盘{ int i,j; for(i=0;i=0;i--) { start=clock(); while(clock()-start0) cout =(length+(grade-1)*8)*10)//判断是否破记录 { gotoxy(10,7); color(12); cout =(length+(grade-1)*8)*10)//判断是否破记录 { gotoxy(10,7); color(12); cout =8)//长度大于等于8重新计算长度,等级加1 { length -= 8;//重新计算长度 grade ++;//等级加1 if(gamespeed>50)//控制最快速度为50 gamespeed = 550 - grade * 50; // 改变自动前进时间间隔 } tcsQipan[x][y]= 3;//贪吃蛇棋盘相应坐标现在蛇头标志改为蛇头标志3 tcsQipan[tcsZuobiao[0][head]][tcsZuobiao[1][head]] = 4;//贪吃蛇棋盘相应坐标原来蛇头标志改为蛇身标志4 head = (head+1)%400;//防止数组越界 tcsZuobiao[0][head] = x;//蛇头的x坐标 tcsZuobiao[1][head] = y;//蛇头的y坐标 do//随机出果子 { x1=rand()%20+1; y1=rand()%20+1; } while(tcsQipan[x1][y1]!=0);//如果不是在空白处重新出果子 tcsQipan[x1][y1]=5;//贪吃蛇棋盘相应坐标标上果子的标志5 gotoxy(22,12); cout << "\t游戏进行中!" << endl; Refresh(tcsQipan,grade,gamespeed,length,score); } else // 不吃果子 { if(otherkey) { tcsQipan [tcsZuobiao[0][tail]][tcsZuobiao[1][tail]]=0; tail=(tail+1)%400;//防止数组越界 tcsQipan [tcsZuobiao[0][head]][tcsZuobiao[1][head]]=4; head=(head+1)%400;//防止数组越界 tcsZuobiao[0][head]=x;//蛇头的x坐标 tcsZuobiao[1][head]=y;//蛇头的y坐标 tcsQipan[tcsZuobiao[0][head]][tcsZuobiao[1][head]]=3; gotoxy(22,12); cout << "\t游戏进行中!" << endl; Refresh(tcsQipan,grade,gamespeed,length,score); } else { gotoxy(22,12); cout << "\t游戏暂停中!" << endl; } } /* 游戏运行时的核心算法结束 */ } while(1) { while(!kbhit()); if((direction =getch())==13)//按回车键开始下一局 break; if(direction ==27)//按ESC退出游戏 exit(0); } system("cls");//清除屏幕重新开始 } return 0;}