js贪吃蛇大作战小游戏如何增加蛇和食物数量;设置食物的毒性;设置游戏开始、结束、暂停、继续等开关按钮,

更多频道内容在这里查看
爱奇艺用户将能永久保存播放记录
过滤短视频
暂无长视频(电视剧、纪录片、动漫、综艺、电影)播放记录,
按住视频可进行拖动
&正在加载...
举报视频:
举报原因(必填):
请说明举报原因(300字以内):
请输入您的反馈
举报理由需要输入300字以内
感谢您的反馈~
请勿重复举报~
请刷新重试~
收藏成功,可进入查看所有收藏列表
把视频贴到Blog或BBS
当前浏览器仅支持手动复制代码
视频地址:
flash地址:
html代码:
通用代码:
通用代码可同时支持电脑和移动设备的分享播放
方式1:用手机看
用爱奇艺APP或微信扫一扫,在手机上继续观看
当前播放时间:
方式2:一键下载至手机
限爱奇艺安卓6.0以上版本
使用微信扫一扫,扫描左侧二维码,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接//71.am/udn
下载安装包到本机:&&
设备搜寻中...
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
连接失败!
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
部安卓(Android)设备,请点击进行选择
请您在手机端下载爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接http://71.am/udn
下载安装包到本机:&&
爱奇艺云推送
请您在手机端登录爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
180秒后更新
打开爱奇艺移动APP,点击“我的-扫一扫”,扫描左侧二维码进行登录
没有安装爱奇艺视频最新客户端?
正在检测客户端...
您尚未安装客户端,正在为您下载...安装完成后点击按钮即可下载
30秒后自动关闭
真实版贪吃蛇!日本一只蛇把自己尾巴当食物吃掉
请选择打赏金额:
播放量12.7万
播放量数据:快去看看谁在和你一起看视频吧~
更多数据:
Copyright (C) 2018
All Rights Reserved
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制
正在为您下载爱奇艺客户端安装后即可快速下载海量视频
正在为您下载爱奇艺客户端安装后即可免费观看1080P视频
&li data-elem="tabtitle" data-seq="{{seq}}"&
&a href="javascript:void(0);"&
&span>{{start}}-{{end}}&/span&
&li data-downloadSelect-elem="item" data-downloadSelect-selected="false" data-downloadSelect-tvid="{{tvid}}"&
&a href="javascript:void(0);"&{{pd}}&/a&
选择您要下载的《》剧集:
后才可以领取积分哦~
{{if data.viewCount && data.viewCount != "0" && data.viewCount != "1" && data.viewCount != "2"
访问泡泡首页
+{{data.rewardScore}}分
{{if data.rewardCount && data.rewardCount != 0 && data.getRewardDayCount != 0}}1{{else}}0{{/if}}/1
{{if data.rewardCount && data.rewardCount != 0 && data.getRewardDayCount != 0}}
+{{data.signScore}}分
{{data.signCount}}/1
{{if data.signCount && data.signCount != 0}}
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制贪吃蛇游戏&C语言程序设计
好多图挂了 看我csdn博客吧
《计算机程序设计》课程设计报告
课 题 名 称&&&&&贪吃蛇游戏&&&&&&&&&&
级&&&&&&&软件1班
& neolone & &
1 需求分析
【阐述课程设计应该完成的功能】
使用键盘的上下左右,来控制蛇的运动方向,ESC键退出,并显示得分。
2 系统分析和设计
2.1 数据结构的设计和选择的理由
本游戏中涉及的主要数据结构是如何表示运动的蛇、食物状态等问题。
2.1.1&从游戏参考画面中我们可以看到,贪吃蛇的身体是一节节的,由一个个大小相同的方块组成,那么我们可以用一个(x,y)坐标为左上角的、固定宽度的正方形来表示一节蛇身。为表示连续的多节身体,那么我们可以采用数组(或链表,或线性表)等数据结构来表示。下面以数组方式为例:
struct Point {
&&& int x,
struct Point nodes[MAX_LENGTH];&
//蛇身数组,MAX_LENGTH为最大蛇长
贪吃蛇是在不断的运动的,我们研究蛇的运动可以发现这样的特点:
1. 蛇头由键盘控制,键盘不操作时,保持原有方向运动;(用
运动时,蛇身后面一节移动到前面一节的位置。当我们用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 {
&&& struct Point
& //食物的位置
&&&&&&&&&&&&
//存在?还是被吃?
2.2 系统模块划分和模块结构
void main() {
init();&&&&&&&&&&&&&&&&&&&&&&
l=1;&&&&&&&&&&&&&&&&&&&&&&&&&&&&
while(l)&&&&&&&&&&&&&&&&&&&&&&&&&
select();&&&&&&&&&&&&&&&&&&&&&&
gamePlay();&&&&&&&&&&&&&&&&&&&
close();&&&&&&&&&&&&&&&&&&&&&&&&&&
2.3 流程图
&<img src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" real_src ="http://hi.csdn.net/attachment//0_qCne.gif" ALT=""
TITLE="贪吃蛇游戏&C语言程序设计" />
2.4 数据类型、全局变量和函数说明
2.4.1数据类型
struct Point
{&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
y;&&&&&&&&&
struct Snake
{&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
structPoint
nodes[MAX_LENGTH];&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
struct Food
{&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
structPoint
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
2.4.2全局变量
Score&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
left,top,right,bottom&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
\\游戏区域范围
lastx,lasty&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
\\用来保存最后一节蛇的位置
keyCode&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
\\用来保存按下的键
2.4.3函数说明
init(void);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
\\初始化程序,给一些初始值赋值
gamePlay(void);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
\\游戏主循环
close(void);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
\\关闭游戏
drawWall(void);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
createFood(void);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
\\创造一个食物
drawFood(void);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
\\画出食物
drawSnake(void);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
drawScore(void);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
\\画出分数
touchWall(void);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
\\判断是否碰到墙
touchSelf(void);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
\\判断是否碰到自己
gameOver(void);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
& \\游戏结束
moveSnake(void);&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&\\移动蛇
int oppositeDirection(int
keyCode);&&&&&&&&&&&&&&&&&&&&
\\判断是否方向有误
foodEat(void);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
& \\判断是否吃到食物
expandSnake(void);&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
\\把蛇增长一节
3 程序测试和运行结果
<img src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" real_src ="http://hi.csdn.net/attachment//0_19.gif" ALT=""
TITLE="贪吃蛇游戏&C语言程序设计" />
----------------------------------------------------------------------------选择速度开始或退出
<img src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" real_src ="http://hi.csdn.net/attachment//0_CsR.gif" ALT=""
TITLE="贪吃蛇游戏&C语言程序设计" />
----------------------------------------------------------------------------------------游戏运行中
<img src="http://simg.sinajs.cn/blog7style/images/common/sg_trans.gif" real_src ="http://hi.csdn.net/attachment//0_CcdK.gif" ALT=""
TITLE="贪吃蛇游戏&C语言程序设计" />
--------------------------------------------------------------------------------------------------------游戏结束
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());
&&&food.position.y=top+10*((int)rand());
for(i=0;i&=snake.length-1;i++){
&if(snake.nodes[i].x==food.position.x&&snake.nodes[i].y==food.position.y)
&&&&&&&&&&&&&
附录A:程序源代码
这是资源地址,源代码
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。JavaScript实现的贪吃蛇游戏
功能:蛇吃食物有三种情况:走到的地方有食物;走到的地方没有食物;走到的地方是墙壁。吃到食物后,蛇的身体会变长;碰到墙壁后 Game Over,询问是否重新开始。
整个游戏是在一个&div&框子(地图)里展开的,蛇有地图里的一系列&div&构成,初始状态(刚刚打开页面)蛇是一个&div&框,蛇头和蛇尾是在一起的,就是这个&div&框,以后吃了食物后&div&个数会变多,蛇就会长长。食物用一个&span&框表示,初始时和蛇一样其位置是随机产生的。蛇和食物的坐标用&div&和&span&的绝对位置表示。
算法的关键是当蛇移动到新的位置后,判断前述的三种情况,做出相应的处理。而二维数组 Map[][] 就是判断的依据。二维数组 Map[][]通过其元素的值来表示蛇身、食物和空地。蛇身、食物和空地的值分别为'S'、'F'和'0'。
用 Javascript 编程和其他语言的一个大的区别就是键盘的控制代码不同。js是通过 Key=event.keyCode 语句获取键盘码,再在多分支 switch 结构里分别处理。看完这些代码就会对浏览器里的键盘控制有所了解了。
当然该段代码的最大价值还是让我们了解到网页游戏的大概写法,而算法其实是最重要的,把一个游戏的设想变为一堆包含许多的函数的结构化的代码,是值得我们借鉴和学习的。
代码里有我的注释,结合我的以上大概分析介绍差不多能看懂了。
题外问题:本人在调试的时候打算给原来的代码加一段方格显示功能,就写了个ShowGrid()函数,采用代码生成方格。但由于在2层循环内完成方格显示,效率十分低下,生成15*10的方格需要大约6秒。生成30*20 的方格竟然需要几分钟。基本不能采用此方法。改进建议:采用图片,既美观,速度也快。
下载"贪吃蛇"
您可能还关注以下内容:
点击:24213&&&&
点击:18798&&&&
点击:11837&&&&
点击:12109&&&&
点击:9640&&&&
点击:8157&&&&
点击:8417&&&&
点击:14493&&&&
点击:7739&&&&
点击:24213&&&&
点击:24409&&&&
点击:23287&&&&
点击:18798&&&&
点击:17721&&&&
点击:14493&&&&
点击:16404&&&&
点击:14143&&&&
点击:11837&&&&
合作网站:蛇蛇大作战炫酷版小游戏
分类:|大小:12M|日期:|英文名:Snake Is Mlg
专题:&&&&&&
此游戏的其他版本
蛇蛇大作战炫酷版小游戏介绍
蛇蛇大作战炫酷版:又一款超炫超酷的另类贪吃蛇来袭,游戏英文名Snake Is Mlg,MLG元素赋予其更多的魔性色彩,玩家要在蛇的海洋和天空中不断吞食各种食物,同时避免碰到其他蛇的头部,不然游戏就结束了哦!来挑战吧,看你有多炫多酷!!!
同类游戏推荐
蛇蛇大作战炫酷版如何开始
加载完毕点击两次播放按钮开始游戏。蛇蛇大作战炫酷版游戏目标
合理操作,吃到更多的金钱,快快长大吧。
敏捷小游戏排行榜js实现贪吃蛇
思想:1、设计蛇:属性有宽、高、方向、状态(有多少节),方法:显示,跑2、设计食物:属性宽、高3、显示蛇:根据状态向地图里加元素4、蛇跑起来:下一节到前一节的位置,蛇头根据方向变,删除原来的蛇,新建蛇;当出界时,死亡,初始化;当蛇头吃到自己的时候,死亡,初始化5、食物被吃掉,蛇加一节,去掉原来的食物,生成新的食物6、添加定时器,绑定按键&!doctype html&
&html lang="en"&
&meta charset="UTF-8"&
&meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"&
&meta http-equiv="X-UA-Compatible" content="ie=edge"&
&title&Document&/title&
&style type="text/css"&
margin: 0;
padding: 0;
width: 800
height: 400
margin: 50
width: 100
height: 40
width: 800
height: 400
background: #
&div class="main"&
&button class="btn" id="begin"&开始游戏&/button&
&div class="map" id="map"&&/div&
&script type="text/javascript"&
var map = document.getElementById('map');
// 使用构造方法创建蛇,
function Snake()
// 设置蛇的宽、高、默认走的方向
this.width = 10;
this.height = 10;
this.direction = 'right';
// 记住蛇的状态,当吃完食物的时候,就要加一个,初始为3个小点为一个蛇,
this.body = [
{x:2, y:0},
// 蛇头,第一个点
{x:1, y:0},
// 蛇脖子,第二个点
{x:0, y:0}
// 蛇尾,第三个点
this.display = function() {
for (var i=0; i&this.body. i++) {
if (this.body[i].x != null) {
// 当吃到食物时,x==null,不能新建,不然会在0,0处新建一个
var s = document.createElement('div');
// 将节点保存到状态中,以便于后面删除
this.body[i].flag =
// 设置宽高
s.style.width = this.width + 'px';
s.style.height = this.height + 'px';
s.style.borderRadius =
s.style.background = "rgb(" + Math.floor(Math.random()*256) + "," + Math.floor(Math.random()*256) + "," + Math.floor(Math.random()*256) + ")";
// 设置位置
s.style.position = 'absolute';
s.style.left = this.body[i].x * this.width + 'px';
s.style.top = this.body[i].y * this.height + 'px';
// 添加进去
map.appendChild(s);
// 让蛇跑起来,后一个元素到前一个元素的位置
// 蛇头根据方向处理,所以i不能等于0
this.run = function() {
// 后一个元素到前一个元素的位置
for (var i=this.body.length-1; i&0; i--) {
this.body[i].x = this.body[i-1].x;
this.body[i].y = this.body[i-1].y;
// 根据方向处理蛇头
switch(this.direction)
case "left":
this.body[0].x -= 1;
case "right":
this.body[0].x += 1;
case "up":
this.body[0].y -= 1;
case "down":
this.body[0].y += 1;
// 判断是否出界,一蛇头判断,出界的话,
if (this.body[0].x & 0 || this.body[0].x & 79 || this.body[0].y & 0 || this.body[0].y & 39) {
clearInterval(timer);
// 清除定时器,
alert("你瞎吗?撞死了!");
// 删除旧的
for (var i=0; i&this.body. i++) {
if (this.body[i].flag != null) {
// 如果刚吃完就死掉,会加一个值为null的
map.removeChild(this.body[i].flag);
this.body = [
// 回到初始状态,
{x:2, y:0},
{x:1, y:0},
{x:0, y:0}
this.direction = 'right';
this.display();
// 显示初始状态
// 判断蛇头吃到食物,xy坐标重合,
if (this.body[0].x == food.x && this.body[0].y == food.y) {
// 蛇加一节,因为根据最后节点定,下面display时,会自动赋值的
this.body.push({x:null, y:null, flag: null});
// 清除食物,重新生成食物
map.removeChild(food.flag);
food.display();
// 吃到自己死亡,从第五个开始与头判断,因为前四个永远撞不到
for (var i=4; i&this.body. i++) {
if (this.body[0].x == this.body[i].x && this.body[0].y == this.body[i].y) {
clearInterval(timer);
// 清除定时器,
alert("傻子!你怎么能吃自己呢?");
// 删除旧的
for (var i=0; i&this.body. i++) {
if (this.body[i].flag != null) {
// 如果刚吃完就死掉,会加一个值为null的
map.removeChild(this.body[i].flag);
this.body = [
// 回到初始状态,
{x:2, y:0},
{x:1, y:0},
{x:0, y:0}
this.direction = 'right';
this.display();
// 显示初始状态
// 先删掉初始的蛇,在显示新蛇
for (var i=0; i&this.body. i++) {
if (this.body[i].flag != null) {
// 当吃到食物时,flag是等于null,且不能删除
map.removeChild(this.body[i].flag);
// 重新显示蛇
this.display();
// 构造食物
function Food()
this.width = 10;
this.height = 10;
this.display = function() {
var f = document.createElement('div');
this.flag =
f.style.width = this.width + 'px';
f.style.height = this.height + 'px';
f.style.background = 'red';
f.style.borderRadius = '50%';
f.style.position = 'absolute';
this.x = Math.floor(Math.random()*80);
this.y = Math.floor(Math.random()*40);
f.style.left = this.x * this.width + 'px';
f.style.top = this.y * this.height + 'px';
map.appendChild(f);
var snake = new Snake();
var food = new Food();
snake.display();
// 初始化显示
food.display();
// 给body加按键事件,上下左右
document.body.onkeydown = function(e) {
// 有事件对象就用事件对象,没有就自己创建一个,兼容低版本浏览器
var ev = e || window.
switch(ev.keyCode)
if (snake.direction != 'down') {
// 不允许返回,向上的时候不能向下
snake.direction = "up";
if (snake.direction != "up") {
snake.direction = "down";
if (snake.direction != "right") {
snake.direction = "left";
if (snake.direction != "left") {
snake.direction = "right";
// 点击开始时,动起来
var begin = document.getElementById('begin');
begin.onclick = function() {
clearInterval(timer);
// timer = setInterval(snake.run(), 500);
// 先执行run函数,把执行得到的结果,每500毫秒执行一次,不会在执行内部代码
timer = setInterval("snake.run()", 500);
// 小技巧,每500毫秒执行字符串,字符串执行内部代码
没有更多推荐了,

我要回帖

更多关于 js贪吃蛇设计思路 的文章

 

随机推荐