
<head>
<title>贪吃蛇 Snake v2.4</title>
<style>
body{
font-size:9pt
}
table{
border-collapse: collapse
border:solid #333 1px
}
td{
height: 10px
width: 10px
font-size: 0px
}
.filled{
background-color:blue
}
</style>
</head>
<script>
function $(id){return document.getElementById(id)}
/**************************************************************
* javascript贪吃蛇 v2.4 <br />
* author: sunxing007 05/14/2009<br />
* 转载请注明来自http://blog.csdn.net/sunxing007 谢谢!<br />
* v2.4修正了蛇身颜色可以随着蛇前进而移动
**************************************************************/
//贪吃蛇类
var Snake = {
tbl: null,
/**
* body: 蛇身,数组放蛇的每一节,
* 数据结构{x:x0, y:y0, color:color0},
* x,y表示坐标,color表示颜色
**/
body: [],
//当前移动的方向,取值0,1,2,3, 分别表示向上,右,下,左, 按键盘方向键可以改变它
direction: 0,
//定时器
timer: null,
//速度
speed: 250,
//是否已经暂停
paused: true,
//行数
rowCount: 30,
//列数
colCount: 30,
//初始化
init: function(){
var colors = ['red','orange','yellow','green','blue','purple','#ccc']
this.tbl = $("main")
var x = 0
var y = 0
var colorIndex = 0
//产生初始移动方向
this.direction = Math.floor(Math.random()*4)
//构造table
for(var row=0row<this.rowCountrow++){
var tr=this.tbl.insertRow(-1)
for(var col=0col<this.colCountcol++) {
var td=tr.insertCell(-1)
}
}
//产生20个松散节点
for(var i=0i<10i++){
x = Math.floor(Math.random()*this.colCount)
y = Math.floor(Math.random()*this.rowCount)
colorIndex = Math.floor(Math.random()*7)
if(!this.isCellFilled(x,y)){
this.tbl.rows[y].cells[x].style.backgroundColor = colors[colorIndex]
}
}
//产生蛇头
while(true){
x = Math.floor(Math.random()*this.colCount)
y = Math.floor(Math.random()*this.rowCount)
if(!this.isCellFilled(x,y)){
this.tbl.rows[y].cells[x].style.backgroundColor = "black"
this.body.push({x:x,y:y,color:'black'})
break
}
}
this.paused = true
//添加键盘事件
document.onkeydown= function(e){
if (!e)e=window.event
switch(e.keyCode | e.which | e.charCode){
case 13: {
if(Snake.paused){
Snake.move()
Snake.paused = false
}
else{
//如果没有暂停,则停止移动
Snake.pause()
Snake.paused = true
}
break
}
case 37:{//left
//阻止蛇倒退走
if(Snake.direction==1){
break
}
Snake.direction = 3
break
}
case 38:{//up
//快捷键在这里起作用
if(event.ctrlKey){
Snake.speedUp(-20)
break
}
if(Snake.direction==2){//阻止蛇倒退走
break
}
Snake.direction = 0
break
}
case 39:{//right
if(Snake.direction==3){//阻止蛇倒退走
break
}
Snake.direction = 1
break
}
case 40:{//down
if(event.ctrlKey){
Snake.speedUp(20)
break
}
if(Snake.direction==0){//阻止蛇倒退走
break
}
Snake.direction = 2
break
}
}
}
},
//移动
move: function(){
this.timer = setInterval(function(){
Snake.erase()
Snake.moveOneStep()
Snake.paint()
}, this.speed)
},
//移动一节身体
moveOneStep: function(){
if(this.checkNextStep()==-1){
clearInterval(this.timer)
alert("Game over!\nPress Restart to continue.")
return
}
if(this.checkNextStep()==1){
var _point = this.getNextPos()
var _x = _point.x
var _y = _point.y
var _color = this.getColor(_x,_y)
this.body.unshift({x:_x,y:_y,color:_color})
//因为吃了一个食物,所以再产生一个食物
this.generateDood()
return
}
//window.status = this.toString()
var point = this.getNextPos()
//保留第一节的颜色
var color = this.body[0].color
//颜色向前移动
for(var i=0i<this.body.length-1i++){
this.body[i].color = this.body[i+1].color
}
//蛇尾减一节, 蛇尾加一节,呈现蛇前进的效果
this.body.pop()
this.body.unshift({x:point.x,y:point.y,color:color})
//window.status = this.toString()
},
//探寻下一步将走到什么地方
pause: function(){
clearInterval(Snake.timer)
this.paint()
},
getNextPos: function(){
var x = this.body[0].x
var y = this.body[0].y
var color = this.body[0].color
//向上
if(this.direction==0){
y--
}
//向右
else if(this.direction==1){
x++
}
//向下
else if(this.direction==2){
y++
}
//向左
else{
x--
}
//返回一个坐标
return {x:x,y:y}
},
//检查将要移动到的下一步是什么
checkNextStep: function(){
var point = this.getNextPos()
var x = point.x
var y = point.y
if(x<0||x>=this.colCount||y<0||y>=this.rowCount){
return -1//触边界,游戏结束
}
for(var i=0i<this.body.lengthi++){
if(this.body[i].x==x&&this.body[i].y==y){
return -1//碰到自己的身体,游戏结束
}
}
if(this.isCellFilled(x,y)){
return 1//有东西
}
return 0//空地
},
//擦除蛇身
erase: function(){
for(var i=0i<this.body.lengthi++){
this.eraseDot(this.body[i].x, this.body[i].y)
}
},
//绘制蛇身
paint: function(){
for(var i=0i<this.body.lengthi++){
this.paintDot(this.body[i].x, this.body[i].y,this.body[i].color)
}
},
//擦除一节
eraseDot: function(x,y){
this.tbl.rows[y].cells[x].style.backgroundColor = ""
},
paintDot: function(x,y,color){
this.tbl.rows[y].cells[x].style.backgroundColor = color
},
//得到一个坐标上的颜色
getColor: function(x,y){
return this.tbl.rows[y].cells[x].style.backgroundColor
},
//用于调试
toString: function(){
var str = ""
for(var i=0i<this.body.lengthi++){
str += "x:" + this.body[i].x + " y:" + this.body[i].y + " color:" + this.body[i].color + " - "
}
return str
},
//检查一个坐标点有没有被填充
isCellFilled: function(x,y){
if(this.tbl.rows[y].cells[x].style.backgroundColor == ""){
return false
}
return true
},
//重新开始
restart: function(){
if(this.timer){
clearInterval(this.timer)
}
for(var i=0i<this.rowCounti++){
this.tbl.deleteRow(0)
}
this.body = []
this.init()
this.speed = 250
},
//加速
speedUp: function(time){
if(!this.paused){
if(this.speed+time<10||this.speed+time>2000){
return
}
this.speed +=time
this.pause()
this.move()
}
},
//产生食物。
generateDood: function(){
var colors = ['red','orange','yellow','green','blue','purple','#ccc']
var x = Math.floor(Math.random()*this.colCount)
var y = Math.floor(Math.random()*this.rowCount)
var colorIndex = Math.floor(Math.random()*7)
if(!this.isCellFilled(x,y)){
this.tbl.rows[y].cells[x].style.backgroundColor = colors[colorIndex]
}
}
}
</script>
<body onload="Snake.init()">
/*************************************************************<br />
* javascript贪吃蛇 v2.4<br />
* author: sunxing007 05/14/2009<br />
* 转载请注明来自 <a href="http://blog.csdn.net/sunxing007">http://blog.csdn.net/sunxing007</a>谢谢!<br />
**************************************************************/<br />
<table id="main" border="1" cellspacing="0" cellpadding="0"></table>
<input type="button" id="btn" value="开始/暂停" />点左边按钮或按Enter开始/暂停游戏<br />
<input type="button" id="reset" value="重新开始" /><br />
<input type="button" id="upSpeed" value="加速" />点左边按钮或按Ctrl + ↑加速<br />
<input type="button" id="downSpeed" value="减速" />点左边按钮或按Ctrl + ↓减速
<script>
$('btn').onclick = function(){
if(Snake.paused){
Snake.move()
Snake.paused = false
}
else{
Snake.pause()
Snake.paused = true
}
}
$("reset").onclick = function(){
Snake.restart()
this.blur()
}
$("upSpeed").onclick = function(){
Snake.speedUp(-20)
}
$("downSpeed").onclick = function(){
Snake.speedUp(20)
}
</script>
</body>
</html>
随着动画技术的不断发展,网络传播速度越来越快,Flash游戏已经成为现在人生活娱乐,打发时间,缓解压力的一项不可或缺的项目。而一个优秀的Flash游戏离不开游戏画面、程序脚本以及后期音效的共同作用。因此,越来越多有着引人入胜的剧情,丰富有趣的画面,好听难忘的音乐的Flash小游戏在互联网上被越来越多的玩家喜爱和分享。当这些兼具艺术性与流行性的元素都由一个游戏组合到一起,人们可以从中得到娱乐和放松,同时有得到一些对生活对人生的启发,让人会心一笑。而创作者也可以选择不同的风格,不同的手法用计算机的一系列数码艺术创作手法实现自己的创意,然后在一些交流互动网站上发表,供他人娱乐或者借鉴,同时也可以得到广大互联网用户的意见,从而提高自身的创作水品。由此可见,Flash游戏设计的意义就在于:集合不同的艺术门类,把艺术与技术相结合。从而让人可以在游戏中的到美的享受。给广大的互联网用户提供了一个娱乐,休闲,放松身心的地方。让设计师之与玩家之间产生交流,从而完善游戏。 *** 作便捷,文件携带方便,无需安装,符合了现在很多快餐式的生活要求便于大众随时的下载,游戏。有丰富的图像,画面不受软件的限制。富有创意,风格多变。是其他电子游戏没有的。国内外研究现状及分析:目前利用Flash开发出了许多夸平台的网络游戏,甚至可以匹敌大型MMOR,在3G时代到来以后,我们很快可以在手机上玩到大型网络游戏,现有的Flash制作网络游戏有:SLG类(热血三国),体育类(热血球球),RPG类(凡人修真),桌面( *** ),TD类(保卫家园)等等.在日本和美国,动画和游戏这一类的技术超出国内比较多,日本的动漫位居世界前列是众所周知的。要想在这一方面能有所作为,仍需加倍努力。有一种游戏叫“贪食蛇”,又名贪吃蛇。一条小蛇,不停地在屏幕上游走,吃各个方向出现的蛋,每吃一颗,就长长一点,吃得越多,长得越长,当手机上的小蛇越来越长,积分便越来越高,游戏边越来越紧张刺激,死亡便悄然降临。因为,贪食蛇身子越长活动空间越窄,这时才后悔太贪吃了。屏幕的空间是有限的,只要蛇头碰到屏幕四周,或者碰到自己的身子,小蛇立即毙命。贪食蛇是一个彻头彻尾的悲剧性游戏,不管玩家自认玩得多么纯熟,手艺多么高超,最终会发现自己将走投无路。那时候,也许玩家不再贪吃,也许玩家明白受到了死亡的威胁,但玩家突然发现自己开始手忙脚乱,疲于奔命了,一切的努力都无济于事,结局必定是听到小蛇的一声惨叫。其实,悲剧结局在游戏开始就注定了,因为这是个特殊的游戏,这个游戏有个要命的字,那就是“贪”!
“贪食蛇”游戏,起初看起来机会甚多,猎物遍地,实际上却步步陷阱,暗藏杀机。游戏开始时,蛇身很短,由于难度小,很容易让人掉以轻心,你会不知不觉加快速度,正是在这个不知不觉的过程中,蛇身在慢慢加长。但玩家往往忽略了这种潜在的危险,麻痹大意,在最得意洋洋的一刻,死亡突然降临。
贪食蛇贪吃,最终吃死了自己,微妙之处在神不知鬼不觉间,一步步把自己推向毁灭的深渊。贪食是一种欲望,更是一种诅咒,只要沾上,便会被利益蒙蔽双眼,便会生出诸多的侥幸,便会欲罢不能,便会淬不及防地一头栽进自己掘下的陷进,用悲壮的一生,给人类一个警示。
由贪食蛇,联想到贪官,都栽在一个“贪”字上,性质上有许多相似。贪官上任伊始或许是清正廉洁的,也被党性武装着头脑,金刚不坏,五毒不侵。但每个人都有情感的缺口——亲人,朋友!于是,便有人上门来打亲情牌,打朋友的幌子,请吃饭,送水果等。这些活动在友谊范围之类,既不违纪,也不犯法。于是,一条烟,一瓶酒,一桌宴席……但事情往往不会仅此而已,有了这一次,还有下一次,虽不合理,但却合情,一次比一次铺张,一次比一次升级,似乎跟前一次也没有多大差别,自认不是什么大事。不知不觉间,“友谊”在加深,“吃”进的东西越来越多,胆子越来越大,戒心也慢慢消除,贪欲慢慢形成,后患越来越大。自己还觉得在亲情、友情的圈子里转呢,内心谬之毫厘,法度上失之千里。在不经意间一步步滑向深渊,万劫不复。
小到个人,大到官场,都可以以贪食蛇为参照。开始时,只是品办公茶,抽办公烟,喝办公酒,吃公家宴席……今天一点,明天一点,吃单位,吃国家,最后吃喝拉撒全让国家报销,用公家钱满足自己在物质和精神上的欲求,这似乎也不是什么大不了的事。事情还不会就此止步,要求慢慢变高,警惕慢慢放松,范围慢慢扩大,连家人和亲友也开始享受单位的“福利”,利用职权之便,用公家钱套私人感情,损公肥私,甚至中饱私囊,把国家的钱变成自己的钱,把赃款漂白成合法收入……一点点偏离党性,一点点背离人民,最终成为国家和人民的蛀虫,站在人民的对立面上,成为人民的罪人。这跟贪食蛇游戏完全一样,最终自己吃死自己!
规避这种不幸的惟一的办法,就是远离这种危险的悲剧性游戏,彻底戒除“贪”念,不与“贪”字沾边,远离了诱惑,远离了陷阱,才能稳健地站立在大地上,昂首挺胸,留一身正气,舞两袖清风,傲立于天地之间,撑起头顶一片朗朗晴空!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)