vb贪吃蛇小游戏报告书里面的蛇怎么能自动跑起来

JS写的贪吃蛇游戏(个人练习)
字体:[ ] 类型:转载 时间:
本文为大家介绍的是使用JS写的贪吃蛇游戏,个人练习之用,感兴趣的额朋友可以参考下哈,希望对大家学习js有所帮助
JS贪吃蛇游戏,个人练习之用,放在这备份一下, & 代码如下: &!DOCTYPE html& &html xmlns="http://www.w3.org/1999/xhtml"& &head& &meta http-equiv="Content-Type" content="text/ charset=utf-8" /& &title&JS贪吃蛇-练习&/title& &style type="text/css"& #pannel table { border-collapse: } #pannel table td { border: 1px solid #808080; width: 10 height: 10 font-size: 0; line-height: 0; overflow: } #pannel table .snake { background-color: } #pannel table .food { background-color: } &/style& &script type="text/javascript"& var Direction = new function () { this.UP = 38; this.RIGHT = 39; this.DOWN = 40; this.LEFT = 37; }; var Common = new function () { this.width = 20; /*水平方向方格数*/ this.height = 20; /*垂直方向方格数*/ this.speed = 250; /*速度 值越小越快*/ this.workThread = }; var Main = new function () { var control = new Control(); window.onload = function () { control.Init("pannel"); /*开始按钮*/ document.getElementById("btnStart").onclick = function () { control.Start(); this.disabled = document.getElementById("selSpeed").disabled = document.getElementById("selSize").disabled = }; /*调速度按钮*/ document.getElementById("selSpeed").onchange = function () { Common.speed = this. } /*调大小按钮*/ document.getElementById("selSize").onchange = function () { Common.width = this. Common.height = this. control.Init("pannel"); } }; }; /*控制器*/ function Control() { this.snake = new Snake(); this.food = new Food(); /*初始化函数,创建表格*/ this.Init = function (pid) { var html = []; html.push("&table&"); for (var y = 0; y & Common. y++) { html.push("&tr&"); for (var x = 0; x & Common. x++) { html.push('&td id="box_' + x + "_" + y + '"&&&/td&'); } html.push("&/tr&"); } html.push("&/table&"); this.pannel = document.getElementById(pid); this.pannel.innerHTML = html.join(""); }; /*开始游戏 - 监听键盘、创建食物、刷新界面线程*/ this.Start = function () { var me = this.MoveSnake = function (ev) { var evt = window.event || me.snake.SetDir(evt.keyCode); }; try { document.attachEvent("onkeydown", this.MoveSnake); } catch (e) { document.addEventListener("keydown", this.MoveSnake, false); } this.food.Create(); Common.workThread = setInterval(function () { me.snake.Eat(me.food); me.snake.Move(); }, Common.speed); }; } /*蛇*/ function Snake() { this.isDone = this.dir = Direction.RIGHT; this.pos = new Array(new Position()); /*移动 - 擦除尾部,向前移动,判断游戏结束(咬到自己或者移出边界)*/ this.Move = function () { document.getElementById("box_" + this.pos[0].X + "_" + this.pos[0].Y).className = ""; //所有 向前移动一步 for (var i = 0; i & this.pos.length - 1; i++) { this.pos[i].X = this.pos[i + 1].X; this.pos[i].Y = this.pos[i + 1].Y; } //重新设置头的位置 var head = this.pos[this.pos.length - 1]; switch (this.dir) { case Direction.UP: head.Y--;
case Direction.RIGHT: head.X++;
case Direction.DOWN: head.Y++;
case Direction.LEFT: head.X--;
} this.pos[this.pos.length - 1] = //遍历画蛇,同时判断游戏结束 for (var i = 0; i & this.pos. i++) { var isExits = for (var j = i + 1; j & this.pos. j++) if (this.pos[j].X == this.pos[i].X && this.pos[j].Y == this.pos[i].Y) { isExits =
} if (isExits) { this.Over();/*咬自己*/ } var obj = document.getElementById("box_" + this.pos[i].X + "_" + this.pos[i].Y); if (obj) obj.className = "snake"; else { this.Over();/*移出边界*/ } } this.isDone = }; /*游戏结束*/ this.Over = function () { clearInterval(Common.workThread); alert("游戏结束!"); } /*吃食物*/ this.Eat = function (food) { var head = this.pos[this.pos.length - 1]; var isEat = switch (this.dir) { case Direction.UP: if (head.X == food.pos.X && head.Y == food.pos.Y + 1) isEat =
case Direction.RIGHT: if (head.Y == food.pos.Y && head.X == food.pos.X - 1) isEat =
case Direction.DOWN: if (head.X == food.pos.X && head.Y == food.pos.Y - 1) isEat =
case Direction.LEFT: if (head.Y == food.pos.Y && head.X == food.pos.X + 1) isEat =
} if (isEat) { this.pos[this.pos.length] = new Position(food.pos.X, food.pos.Y); food.Create(this.pos); } }; /*控制移动方向*/ this.SetDir = function (dir) { switch (dir) { case Direction.UP: if (this.isDone && this.dir != Direction.DOWN) { this.dir = this.isDone = }
case Direction.RIGHT: if (this.isDone && this.dir != Direction.LEFT) { this.dir = this.isDone = }
case Direction.DOWN: if (this.isDone && this.dir != Direction.UP) { this.dir = this.isDone = }
case Direction.LEFT: if (this.isDone && this.dir != Direction.RIGHT) { this.dir = this.isDone = }
} }; } /*食物*/ function Food() { this.pos = new Position(); /*创建食物 - 随机位置创建立*/ this.Create = function (pos) { document.getElementById("box_" + this.pos.X + "_" + this.pos.Y).className = ""; var x = 0, y = 0, isCover = /*排除蛇的位置*/ do { x = parseInt(Math.random() * (Common.width - 1)); y = parseInt(Math.random() * (Common.height - 1)); isCover = if (pos instanceof Array) { for (var i = 0; i & pos. i++) { if (x == pos[i].X && y == pos[i].Y) { isCover =
} } } } while (isCover); this.pos = new Position(x, y); document.getElementById("box_" + x + "_" + y).className = "food"; }; } function Position(x, y) { this.X = 0; this.Y = 0; if (arguments.length &= 1) this.X = if (arguments.length &= 2) this.Y = } &/script& &/head& &body& &div id="pannel" style="margin-bottom: 10"&&/div& &select id="selSize"& &option value="20"&20*20&/option& &option value="30"&30*30&/option& &option value="40"&40*40&/option& &/select& &select id="selSpeed"& &option value="500"&速度-慢&/option& &option value="250" selected="selected"&速度-中&/option& &option value="100"&速度-快&/option& &/select& &input type="button" id="btnStart" value="开始" /& &/body& &/html&
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具当前位置:
文件名称:Snake
所属分类:
资源属性:
Windows,Visual C,C/C++,源码
上传时间:
文件大小:
浏览/下载:
710次 / 0次
提 供 者:
相关连接:
下载说明:
别用迅雷下载,失败请重下,重下不扣分!
windows 下贪吃蛇小游戏源代码
按键盘上的方向键可以控制蛇的移动方向,蛇吃到食物就可以变长。-底层贪吃蛇小游戏
(系统自动生成,下载前可以参看下载内容)下载文件列表
压缩包 : Snake.rar 列表
Snake/Body.bmp
Snake/Debug/Grunt.obj
Snake/Debug/Snake.exe
Snake/Debug/Snake.ilk
Snake/Debug/Snake.pch
Snake/Debug/Snake.pdb
Snake/Debug/Snake1.obj
Snake/Debug/Snake1.res
Snake/Debug/vc60.idb
Snake/Debug/vc60.pdb
Snake/Grunt.cpp
Snake/Grunt.h
Snake/Head.bmp
Snake/Hundred.bmp
Snake/RCa04064
Snake/RCb04064
Snake/resource.h
Snake/Snake.dsp
Snake/Snake.dsw
Snake/Snake.ncb
Snake/Snake.opt
Snake/Snake.plg
Snake/Snake1.aps
Snake/Snake1.cpp
Snake/Snake1.h
Snake/Snake1.rc
Snake/Debug
暂无评论内容.
*快速评论:
和说明不符
不是源码或资料
纯粹是垃圾
*内  容:
*验 证 码:
搜珍网是交换下载平台,下载的内容请自行研究使用或咨询上传人.
资源属性分别代表:系统平台,开发平台,开发语言,文件格式四部分.
本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用进行解压.
如果您发现此软件无法下载,请稍后再次尝试;或者.
本站提供下载的内容为网上收集或会员上传提供,若无意中侵犯了您的版权,.
如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
如下载后发现下载的内容跟说明不相乎,可以联系本站的客服,经确认可以退回消费了的积分.
联系我们网站
·电话:(0)
All Rights Reserved.类型:角色扮演
广州银汉科技|幻城653区
类型:策略塔防
上海游族网络|逞心如意
类型:角色扮演
中手游集团|神话135服
类型:角色扮演
芜湖易玩网络|沙巴克68服
类型:角色扮演
广州三七网络|永恒680服
关注我们:当前位置:&>&&>&
贪吃蛇大作战怎么吃蛇 吃蛇方法介绍
贪吃蛇大作战怎么吃掉别的蛇?玩家们一定还不知道吃蛇方法了,那么下面就让小编来给大家介绍下贪吃蛇大作战吃蛇方法吧。吃蛇方法介绍:贪吃蛇大作战的游戏规则并不是大蛇吃小蛇,而是谁撞到别人谁就GG。玩过贪吃蛇的不会陌生,在蛇蛇大作战中不管玩家有多大,只要是碰到别人,自己就会死亡。蛇蛇大作战里的光点和光团都是蛇蛇使自己变大的“食物”或者说是“能量团”。
新版首发礼包
童话大冒险礼包
首发大礼包贪吃蛇游戏(三)——定义蛇 - 简书
贪吃蛇游戏(三)——定义蛇
本节目标:定义我们游戏的主角:贪吃蛇。在上一节里,我们完成了食物的定义,虽然还很粗糙,但基本的功能已经完成了,本节则完成蛇的定义。
1 定义蛇的组成(bodyItem)我们知道在贪吃蛇游戏中,蛇是一段一段的,换句话说:蛇是一段段身体组成的,因此,我们需要先定义『段』作为蛇的基本构成。点击file-&new-&file 选择Swift file,点击next, Save as ListBodyItem
在左侧找到ListBodyItem.swift,并点击。在编辑区添加如下代码:
import UIKit
class ListBodyItem: UIButton {
override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = UIColor.redColor()
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
有了bodyIItem的雏形还不够,我们需要继续完善。在贪吃蛇游戏里,蛇的身体的每一段之间是有联系的。当蛇在运动的时候,每走一步,都是后面一段将自己的位置更新为前一段的位置,是一个明显的传递过程。从代码的角度来说,每一个bodyIItem,都有一个后继(除了蛇的尾部),当自己更新的时候,同时更新自己的后继,将这个移动的过程传递下去。而swift由于有属性重载这样的功能,可以将这个传递的过程实现的很简单,在ListBodyItem的init之前加入如下代码:
override var frame: CGRect {
if let next = nextItem {
next.frame.origin = frame.origin
super.frame.origin = newValue.origin
return super.frame
var nextItem: ListBodyItem?
现在,当蛇头运动时,后续的body将自动跟随头部运动。
2 定义蛇头和蛇的身体有了bodyItem的定义之后,我们可以自然而然的定义蛇头,它继承自bodyItme,请在ListBodyItem定义的后面加入如下代码:
class SnakeHead: ListBodyItem {
super.init(frame: CGRect(x: 90, y: 90, width: 30, height: 30))
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
单独将蛇头抽象出来是因为蛇头这里有一些单独的逻辑,比如方向,比如吃食物事件的触发等等。我们继续在SnakeHead的定义后面定义蛇的身体,蛇的身体是多个bodyIItem的组合,我们使用一个数组来表示,代码如下:
class SnakeBody {
var bodys = [ListBodyItem]()
//初始化身体时只有一段
bodys.append(conBody(CGRect(x: 60, y: 90, width: 30, height: 30)))
//为蛇添加一段(完成一次吃食后调用)
func addOne(view: UIView) {
let curLast = bodys.last!
bodys.append(conBody(curLast.frame))
curLast.nextItem = bodys.last
view.addSubview(bodys.last!)
//构造一个bodyItem
func conBody(frame: CGRect) -& ListBodyItem {
let body = ListBodyItem(frame: frame)
return body
当蛇成功的吃掉一个食物时,将会触发addOne操作。
3 完整的定义蛇有了蛇头和蛇身体的定义后,我们可以完成蛇的定义了。点击左上角的file-&new-&file,选择Swift file,点击next,在Save as那里输入Snake,然后在编辑区输入如下代码:
import UIKit
class Snake {
let head = SnakeHead()
let body = SnakeBody()
//保存弱引用,避免互相引用引起的内存泄露
weak var mainView: UIView!
init(view: UIView) {
mainView = view
head.nextItem = body.bodys[0]
view.addSubview(head)
view.addSubview(body.bodys[0])
然后我们在SnakeViewController中增加对Snake的引用。点击左侧的SnakeViewController.swift
在var food: Food!下添加
var snake: Snake!
并在food = Food(view: view)下添加
snake = Snake(view: view)
之后点击左上角的运行,如果一步一步操作正常,将在模拟器中显示出如下画面:
红色部分,就是我们的贪吃蛇了,目前看还很粗糙,而且不会动。没关系,后续我们一步步的完善它。
4 让蛇动起来为了让我们的小蛇能动起来,我们需要增加一个定时器,每隔0.5秒定时器触发,当定时器触发时,我们修改蛇头的坐标,从而完成蛇的运动。在左侧选择SnakeViewController.swift,在var snake: Snake!上边添加代码:
var time: NSTimer!
这样定义了一个定时器。之后我们再定义一个定时器触发时的执行函数。在viewDidLoad定义下面添加如下代码:
func walk() {
snake.walk()
然后在viewDidLoad中完成定时器的注册任务,在snake = Snake(view: view)下面添加如下代码:
timer = NSTimer.scheduledTimerWithTimeInterval(0.5, target: self, selector: Selector("walk"), userInfo: nil, repeats: true)
目前,SnakeViewController的代码如下:
import UIKit
class SnakeViewController: UIViewController {
var timer: NSTimer
var food: Food!
var snake: Snake!
override func viewDidLoad() {
super.viewDidLoad()
//初始化food
food = Food(view: view)
snake = Snake(view: view)
timer = NSTimer.scheduledTimerWithTimeInterval(0.5, target: self, selector: Selector("walk"), userInfo: nil, repeats: true)
func walk() {
snake.walk()
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
万事俱备,只差在snake中实现walk方法了。请在导航左侧找到Snake.swift,并单击:
在init函数后添加如下代码:
func walk() {
//临时代码,后续会修改
head.frame.origin.x += 30.0
每次触发时修改head的横坐标。(只是暂时这样,后续会有方向的添加等等)现在,Snake.swift的代码如下:
import UIKit
class Snake {
let head = SnakeHead()
let body = SnakeBody()
//保存弱引用,避免互相引用引起的内存泄露
weak var mainView: UIView!
init(view: UIView) {
mainView = view
head.nextItem = body.bodys[0]
view.addSubview(head)
view.addSubview(body.bodys[0])
func walk() {
head.frame.origin.x += 30.0
点击左上角的运行,我们看到「可爱」的红色小蛇动了起来。
“大圣,此去欲何?”
“踏南天,碎凌霄。”
“若一去不回……”
“便一去不回!”}

我要回帖

更多关于 c语言小游戏贪吃蛇 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信