中文字幕二区_国产精品免费在线观看_黄色网站观看_人人草人人澡_日本真实娇小xxxx

您的位置: 首頁 > 技術(shù)文檔 > 多媒體制作 > 貪吃蛇游戲代碼翻譯
五分鐘搭建 Flash 視頻直播站 回到列表 什么是AS2.0面向?qū)ο缶幊?/a>
 貪吃蛇游戲代碼翻譯

作者:alan98 時間: 2008-01-23 文檔類型:翻譯 來自:藍(lán)色理想

今天翻譯了一段經(jīng)典的貪吃蛇代碼,譯后感覺還有很多地方不太妥當(dāng),很多不妥的地方希望大家多指教

原文

//--- 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 !(x%520) 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 = x%520; _y = int(x/520)*8; // set snake block position
            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
    }
}

翻譯

//--- Flash MX 貪吃蛇游戲(1Kb) 制作Strille. 版本 2.2, 共計(jì) 746 字節(jié)
//--- 復(fù)制以下代碼在主場景的第一幀場景大小為 512x280 , FPS 16
createTextField("t", 1, 1, 255, 511, 32);
// create a text field to write score and instructions
// 創(chuàng)建一個文本框用于輸出成績和指示
t.text = "Snake Game\t-\tPress SPACE";
// 顯示開始信息
beginFill(0xeeeeee); lineStyle(1); lineTo(511, 0); lineTo(511, 256); lineTo(0, 256); endFill();
// 沿邊框繪制背景
Key.addListener(t);
// 使用一個已存在的Object 作鍵盤幀聽 (就樣就不用再創(chuàng)建新Obejct,從而節(jié)約了空間)
t.onKeyDown = function() {
// 當(dāng)鍵盤按下后,去執(zhí)行自定義的這個方法
    c = Key.getCode()-37;
// 獲得按鍵的ASCII碼 (變量 c 每次獲取相對的ASCII碼)
    if (!(c>>2)) {
// 方向鍵的表示 (c = 0, 1, 2 or 3)
        if (c != q[0])
// 只將新的方向鍵存入隊(duì)列 q
            q.unshift(c);
        return;
// 在隊(duì)列中保存,并結(jié)束該方法(函數(shù))
    }
    // 空格或其它鍵不同于按下的方向鍵
    x = 32*8 + 32*520;
    // 蛇的起點(diǎn)坐標(biāo)( 左邊 + 右邊:可被視為 x、y 坐標(biāo))
    q = [];
    // 用于存儲按鍵的隊(duì)列(因此改變在一幀中的X坐標(biāo)對于所有幀中的X坐標(biāo)都起作用)
    m = [];
    // 創(chuàng)建一個數(shù)組用于存儲食物的坐標(biāo)和蛇
    createEmptyMovieClip("s", w=0);
    // 創(chuàng)建一個空影片用于存儲蛇和食物的影片剪輯,并重置蛇的計(jì)數(shù)器(w)
    e = 2*(m[x-520] = 2*(r=1));
    // 設(shè)置擦除計(jì)數(shù)器(e) to 4, 設(shè)置當(dāng)前方向(r)為向上(1),當(dāng)蛇經(jīng)過食物后立即設(shè)置食物位置為當(dāng)前設(shè)置的位置
    onEnterFrame = function () {
    // 主函數(shù)
        c = q.pop();
      // 在隊(duì)列中提取出下一輪變換(當(dāng)隊(duì)列為空時,提取數(shù)是undefined的)
        if (c%2 != r%2)
        // 檢查其不屬于undefined和180度旋轉(zhuǎn)(避免任意按下一個鍵后就改變蛇的方向)
            if (c != undefined)
                r = c;
            // 改變當(dāng)前方向?yàn)樾碌姆较?br>        x += [-1, -65, 1, 65][r]*8;
       // 移動蛇到一個新的X位置 (-1 = left, -65 = up, 1 = right, 65 = down)
        if (m[x] == 1 or !(x%520) or !(int(x/520) % 33)) {
       // 如果新的位置在蛇身上或出了邊界則 GAME OVER
            delete onEnterFrame;
          // 退出主循環(huán)函數(shù)
            t.text += "\tGAME OVER!"; return;
         // 輸出 GAME OVER! 并退出主程序
        }
        with(s.createEmptyMovieClip(w, w)) {
       // 放置蛇身 (第一次循環(huán)時用于放置食物)
            beginFill(255<<16);
          // 首先將食物設(shè)為紅色
            if (w++) // blue snake color the other times
                beginFill(0x555588);
            _x = x%520; _y = int(x/520)*8;
           // 設(shè)置蛇身的位置
            lineTo(-7, 0); lineTo(-7, -7); lineTo(0, -7); endFill();
          // 繪制一個方形
        }
        m[x] += 1;
      // 設(shè)置當(dāng)前位置為"已占用"區(qū)作為蛇身
        if (m[x] == 3) {
      // 檢查是否有食物在新的位置上
            t.text = "Score: " +(w-(e-=5)-2)*2;
         // 延遲擦除計(jì)數(shù)器5(蛇身每次增長5), 計(jì)算并輸出分?jǐn)?shù) (一個食物加10分)
            do {} while (m[c = (s[0]._x = 8+random(64)*8)+(s[0]._y = 8+random(32)*8)*65]);
         // 尋找一個空位置放置點(diǎn), 并存儲該數(shù)值, 并設(shè)置食物的影片剪輯
            m[c] = 2;
         //設(shè)置選出的位置為為大于2的線路上
        }
        if (e) {
       // if not food MC (s[0]) then erase last snake MC and entry in array m
            c = s[e];
           // 獲得最后一個影片剪輯
            delete m[c._x+65*c._y]; removeMovieClip(c);
          // 刪除數(shù)組 m 中該元素的值并刪除影片剪輯
        }
        e++;
       // 將蛇的擦除計(jì)數(shù)器加一
    }
}

經(jīng)典論壇討論
http://bbs.blueidea.com/thread-2820487-1-1.html

本文鏈接:http://m.95time.cn/tech/multimedia/2008/5296.asp 

出處:藍(lán)色理想
責(zé)任編輯:moby

◎進(jìn)入論壇RIA設(shè)計(jì)與應(yīng)用版塊參加討論

相關(guān)文章 更多相關(guān)鏈接
洞穴之光——游戲時間
《Flash組件、游戲、SWF加解密》
[Perl]文字/代碼批量替換工具
國際手機(jī)游戲大獎賽
符合web標(biāo)準(zhǔn)的媒體播放器代碼
關(guān)鍵字搜索 常規(guī)搜索 推薦文檔
熱門搜索:CSS Fireworks 設(shè)計(jì)比賽 網(wǎng)頁制作 web標(biāo)準(zhǔn) 用戶體驗(yàn) UE photoshop Dreamweaver Studio8 Flash 手繪 CG
站點(diǎn)最新 站點(diǎn)最新列表
周大福“敬•自然”設(shè)計(jì)大賽開啟
國際體驗(yàn)設(shè)計(jì)大會7月將在京舉行
中國國防科技信息中心標(biāo)志征集
云計(jì)算如何讓安全問題可控
云計(jì)算是多數(shù)企業(yè)唯一擁抱互聯(lián)網(wǎng)的機(jī)會
阿里行云
云手機(jī)年終巨獻(xiàn),送禮標(biāo)配299起
阿里巴巴CTO王堅(jiān)的"云和互聯(lián)網(wǎng)觀"
1499元買真八核 云OS雙蛋大促
首屆COCO桌面手機(jī)主題設(shè)計(jì)大賽
欄目最新 欄目最新列表
淺談JavaScript編程語言的編碼規(guī)范
如何在illustrator中繪制臺歷
Ps簡單繪制一個可愛的鉛筆圖標(biāo)
數(shù)據(jù)同步算法研究
用ps作簡單的作品展示頁面
CSS定位機(jī)制之一:普通流
25個最佳最閃亮的Eclipse開發(fā)項(xiàng)目
Illustrator中制作針線縫制文字效果
Photoshop制作印刷凹凸字體
VS2010中創(chuàng)建自定義SQL Rule

藍(lán)色理想版權(quán)申明:除部分特別聲明不要轉(zhuǎn)載,或者授權(quán)我站獨(dú)家播發(fā)的文章外,大家可以自由轉(zhuǎn)載我站點(diǎn)的原創(chuàng)文章,但原作者和來自我站的鏈接必須保留(非我站原創(chuàng)的,按照原來自一節(jié),自行鏈接)。文章版權(quán)歸我站和作者共有。

轉(zhuǎn)載要求:轉(zhuǎn)載之圖片、文件,鏈接請不要盜鏈到本站,且不準(zhǔn)打上各自站點(diǎn)的水印,亦不能抹去我站點(diǎn)水印。

特別注意:本站所提供的攝影照片,插畫,設(shè)計(jì)作品,如需使用,請與原作者聯(lián)系,版權(quán)歸原作者所有,文章若有侵犯作者版權(quán),請與我們聯(lián)系,我們將立即刪除修改。

您的評論
用戶名:  口令:
說明:輸入正確的用戶名和密碼才能參與評論。如果您不是本站會員,你可以注冊 為本站會員。
注意:文章中的鏈接、內(nèi)容等需要修改的錯誤,請用報(bào)告錯誤,以利文檔及時修改。
不評分 1 2 3 4 5
注意:請不要在評論中含與內(nèi)容無關(guān)的廣告鏈接,違者封ID
請您注意:
·不良評論請用報(bào)告管理員,以利管理員及時刪除。
·尊重網(wǎng)上道德,遵守中華人民共和國的各項(xiàng)有關(guān)法律法規(guī)
·承擔(dān)一切因您的行為而直接或間接導(dǎo)致的民事或刑事法律責(zé)任
·本站評論管理人員有權(quán)保留或刪除其管轄評論中的任意內(nèi)容
·您在本站發(fā)表的作品,本站有權(quán)在網(wǎng)站內(nèi)轉(zhuǎn)載或引用
·參與本評論即表明您已經(jīng)閱讀并接受上述條款
推薦文檔 | 打印文檔 | 評論文檔 | 報(bào)告錯誤  
專業(yè)書推薦 更多內(nèi)容
網(wǎng)站可用性測試及優(yōu)化指南
《寫給大家看的色彩書1》
《跟我去香港》
眾妙之門—網(wǎng)站UI 設(shè)計(jì)之道
《Flex 4.0 RIA開發(fā)寶典》
《贏在設(shè)計(jì)》
犀利開發(fā)—jQuery內(nèi)核詳解與實(shí)踐
作品集 更多內(nèi)容

雜⑦雜⑧ Gold NORMANA V2