首页 | CG软件 | CG信息 | CG教程 | 三维作品 | 设计理论 | CG加油站 | 设计鉴赏 | 社区图库 | Flash | 专题 | 顶客 | 论坛 | 博客 | 导航 | 下载 | 高级搜索
RSS
热门: 3D Total  RPC  Evermotion  效果图  创意  装修  优秀作品  Vray  艺术  欣赏

Flash贪吃蛇游戏AS代码翻译

来源:arting365 作者: 时间:2008-10-03 点击:
感觉   地方   网页   原文   代码    

今天翻译了一段经典的贪吃蛇代码,译后感觉还有很多地方不太妥当,很多不妥的地方希望大家多指教

原文:

//--- Flash MX Snake Game 1Kb by Strille. Version 2.2, 746 bytes
//--- Paste this code on frame 1 and set scene size to 512x280 and Frame Rate to 16
//--- The code is not written with speed in mind, only small file size. Not that it is slow :-)
createTextField(\"t\", 1, 1, 255, 511, 32); // create a text field to write score and instructions
t.text = \"Snake Game\t-\tPress SPACE\"; // show start text
beginFill(0xeeeeee); lineStyle(1); lineTo(511, 0); lineTo(511, 256); lineTo(0, 256); endFill(); // draw background with border
Key.addListener(t); // use an existing object as key listener (we don't waste bytes by creating a new object)
t.onKeyDown = function() { // define an anonymous method to execute when a key is pressed
c = Key.getCode()-37; // get key code (c is a variable used \"locally\" several times)
if (!(c>>2)) { // arrow keys pressed (c = 0, 1, 2 or 3)
if (c != q[0]) // only add to the queue if it is a new direction
q.unshift(c);
return; // save the turn in the queue and exit method
}
// SPACE or another key other than an arrow key has been pressed
x = 32*8 32*520; // snake start pos (left and right side of can be viewed as x and y coord
q = []; // a queue to store key presses (so that x number of key presses during one frame are spread over x number of frames)
m = []; // create an array to store food pos and snake
createEmptyMovieClip(\"s\", w=0); // create MC to store the snake and the food MC and reset snake counter(w)
e = 2*(m[x-520] = 2*(r=1)); // set erase counter (e) to 4, set current direction (r) to up (1) and set food on the position the snake will be over the first time to place food
onEnterFrame = function () { // MAIN function
c = q.pop(); // pick the next turn in the queue (may be undefined if queue is empty)
if (c%2 != r%2) // and check that it is not undefined and not a 180 degree turn (annoying to be able to turn into the snake with one key press)
if (c != undefined)
r = c; // change current direction to the new value
x = [-1, -65, 1, 65][r]*8; // move the snake to a new x position (-1 = left, -65 = up, 1 = right, 65 = down)
if (m[x] == 1 or !(xR0) or !(int(x/520) % 33)) { // GAME OVER if it is a snake block or outside the map on the next position
delete onEnterFrame; // quit looping main function
t.text = \"\tGAME OVER!\"; return; // type game over text and exit main
}
with(s.createEmptyMovieClip(w, w)) { // place a snake block (or food block the first loop)
beginFill(255<<16); // red food color first time
if (w ) // blue snake color the other times
beginFill(0x555588);
_x = xR0; _y = int(x/520)*8; // set snake block position Webjx.Com
lineTo(-7, 0); lineTo(-7, -7); lineTo(0, -7); endFill(); // draw a square
}
m[x] = 1; // set current pos as \"occupied\" by a snake block
if (m[x] == 3) { // check if there is a food block on the new pos
t.text = \"Score: \" (w-(e-=5)-2)*2; // delay erase counter with 5 (the snake will grow 5 blocks each time), calculate and type score ( 10p for a food block)
do {} while (m[c = (s[0]._x = 8 random(64)*8) (s[0]._y = 8 random(32)*8)*65]); // pick a free spot to place the food, save that number, place the food MC
m[c] = 2; // set the position picked on the line above to 2

网页教学网


}
if (e) { // if not food MC (s[0]) then erase last snake MC and entry in array m
c = s[e]; // get last MC
delete m[c._x 65*c._y]; removeMovieClip(c); // delete the value in the array m and delete the MC
}
e ; // increase erase snake counter
}
}
本文地址:http://www.cg3000.com/html/cgTutorials/Website/Flash/20081003/FlashtanchisheyouxiASdaimafanyi_183593.shtml
上一篇:Swf2Gif快速将flash动画变成GIF格式
下一篇:Flash AS教程:填色游戏的制作
关键字:迅雷 快车 Baidu 代码 游戏
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册
图腾CG联盟免责声明:本网站转载纯粹出于为网民传递更多信息之目的,无任何商业目的。如本网站转载稿件涉及版权等问题,请作者速来函admincg3000@163.com联系,在此,我们首先向您表示诚挚的歉意,并将尽快予以改正。本网站上发表的内容只代表作者本人之观点,本网站只出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。
赞助广告