• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Codejie's C++ Space

            Using C++

            I;P : Online Manual

            快捷鏈接

                下載地址

                相關(guān)隨筆

             

            正文

                I;P (I'm a Programmer)是一款A(yù)ndroid平臺下類似"推箱子"的益智游戲, 其玩法是通過邏輯判斷和控制完成游戲各關(guān)卡設(shè)定, 當(dāng)玩家將游戲中的'箱子'安裝關(guān)卡要求的方式擺放時即為通關(guān). 由于游戲本身是傾向于程序員, 工程師或者算法愛好者的, 而且我也認(rèn)為通過此游戲可以培養(yǎng)和鍛煉個人的"編程思維", 因此游戲的名字在一開始就被定為 I;P (I'm a Programmer)了, 這個全稱到縮寫的過程也就構(gòu)成了游戲的起始畫面.

            ip_1 ip_2

             

                I;P關(guān)卡一共分為六大類, 分別是'Tutorials'(教程),'Easy'(容易), 'Hard'(難), 'Crazy'(瘋狂), 'Impossible'(不可能)和'Unsolved'(未解決)[(原諒我界面全部都是英文, 因為現(xiàn)在真沒時間加載中文字庫...)], 理論上除第一個是教程外, 后面的關(guān)卡是越來越難. 目前由于是Preview階段, I;P的關(guān)卡有限, 且分類還是比較混亂的, 后續(xù)會根據(jù)反饋進(jìn)行相應(yīng)的調(diào)整.

            ip_3

                這里建議先從'Tutorias'開始, 因為這是一個包含三個關(guān)卡的教程包. 游戲?qū)⒁龑?dǎo)你通過三個關(guān)卡, 并在過程中提示該如何使用游戲中的各個元素.

            ip_8 ip_9

                當(dāng)選擇一個關(guān)卡后, I;P進(jìn)入關(guān)卡界面, 在此界面中, 主要元素為左上的"箱子初始"擺放, 右上的"箱子目標(biāo)"擺放; 而左下的四條長方形構(gòu)成的區(qū)域為玩家"控制指令區(qū)", 可以在此區(qū)域內(nèi)輸入你的"指令"集, 以"控制"上方"箱子"區(qū)域中的"托盤"來移動相應(yīng)的"箱子"; 界面中最右側(cè)是"菜單"區(qū)域, 游戲中的菜單都集中在此, 并會根據(jù)不同場景顯示不同的菜單. 需要注意的是整個界面的最右下方的"運行"按鈕 -- 當(dāng)"指令"輸入完成時, 點擊此鈕開始執(zhí)行你的指令, 而在執(zhí)行過程中的任何時候或者執(zhí)行完畢, 點擊此鈕, 界面將恢復(fù)到其初始狀態(tài).

            ip_10

                一, 箱子

                I;P中一共有四種箱子, 分別由'藍(lán)色','綠色','紅色'和'黃色'四種顏色標(biāo)識. 游戲規(guī)則也要求在擺放箱子時'顏色'要一致.

            box_abox_bbox_cbox_d

             

                二, 指令

                I;P提供了四個輸入列(從f0到f3), 每一個列都包含了八個控制框和八個判斷框, 就是說一個列最多可以包含十六個指令. 但各個輸入列可以相互調(diào)用, 比如在f0中可以輸入'f1', 意味著f0將調(diào)用f1中的指令.

            lines_small_title_alines_small_title_blines_small_title_clines_small_title_d

                由于輸入列有兩種狀態(tài): 輸入和展示, 因此游戲中每個指令都有兩種不同的形式.

                點擊任何一個輸入列(f0~f1), 都可以切換其到輸入狀態(tài), 此時可以點擊指定的控制框或者判斷框, 以選擇自己所需的各個指令.

            columns

                "控制指令"用于控制黑色的"托盤"的行為:

                lines_small_code_right 向右移動一格;

                lines_small_code_left 向左移動一格;

               lines_small_code_act  "充電"; 當(dāng)"托盤"被要求"充電"時, 如果其上放置了"箱子", "托盤"將"釋放其上的"箱子", "箱子"將自動移動到"最上"可以到達(dá)的位置; 反之, 如果"托盤"上沒有任何的"箱子", 托盤將嘗試從其所在的列中"抓取"一個箱子, 如果沒有, 則什么也不做;

                lines_small_code_call_a 調(diào)用f0輸入列

                lines_small_code_call_b 調(diào)用f1輸入列

                lines_small_code_call_c 調(diào)用f2輸入列

                lines_small_code_call_d 調(diào)用f3輸入列

             

                "判斷指令"用于判斷當(dāng)前"托盤"上的"箱子"狀態(tài)的;  當(dāng)"判斷"結(jié)果為"真"時, 游戲?qū)?zhí)行其后的"控制指令", 反之不執(zhí)行其后的"指令", 而是調(diào)用下一個判斷框中的"判斷指令"或是下一個控制框中的"指令"; 也就是說, "判斷指令"只能影響到其后的一個"控制指令", 即一對一關(guān)系.

                panel_code_if_a lines_small_code_if_a lines_big_code_if_a 判斷"托盤"上的箱子為"藍(lán)色"箱子;

                panel_code_if_b lines_small_code_if_b lines_big_code_if_b 判斷"托盤"上的箱子為"綠色"箱子;

                panel_code_if_c lines_small_code_if_c lines_big_code_if_c 判斷"托盤"上的箱子為"紅色"箱子;

                panel_code_if_d lines_small_code_if_d lines_big_code_if_d 判斷"托盤"上的箱子為"黃色"箱子;

                panel_code_if_any lines_small_code_if_any lines_big_code_if_any 判斷"托盤"上的箱子為任意顏色的箱子;

                panel_code_if_none lines_small_code_if_none lines_big_code_if_none 判斷"托盤"上的箱子沒有箱子;

             

                游戲每次都從f0輸入列的第一個指令框開始安裝順序執(zhí)行, 因此必須指令必須從f0開始輸入, 當(dāng)執(zhí)行過程中碰到一個'空'的控制指令時, 即調(diào)用的控制框中沒有任何指令時, 執(zhí)行過程停止, 并顯示'Code Finished'指示.    

                由上面內(nèi)容我們可以看出, 實際輸入過程就是編寫"代碼"的過程, "判斷指令"即為'if'判斷代碼, 而'控制指令'即為要執(zhí)行的命令代碼, 而"輸入列"就對應(yīng)了代碼中的函數(shù).

                比如下面截圖可以轉(zhuǎn)換成相應(yīng)的代碼:

            cods

             

            f0() {

                if (托盤上的箱子==白色) {

                    充電();

                }

                if (托盤上的箱子 == 黃色) {

                    左移();

                }

                ....

                if (托盤上有箱子) {

                    調(diào)用f1();

                }

            }       

                三, 執(zhí)行結(jié)果

                I;P中有四種執(zhí)行結(jié)果;

                成功: 將箱子按照關(guān)卡要求的位置擺放;

            result_succ

                執(zhí)行完畢: 指令全部執(zhí)行完畢, 但未完成關(guān)卡要求;

            result_finished

                指令異常:  指令執(zhí)行時使"托盤"移動出邊界;

            result_failed

                棧溢出: 輸入列調(diào)用次數(shù)過多;   

            result_overflow

             

                四, 分?jǐn)?shù)

                 當(dāng)關(guān)卡通過時, 游戲會顯示當(dāng)前指令的得分已經(jīng)關(guān)卡的標(biāo)準(zhǔn)分?jǐn)?shù), 這個分?jǐn)?shù)是越小越好, 因為分?jǐn)?shù)是跟指令數(shù)量和類型相關(guān)的, 越少的指令通關(guān)也就越好. 注意的是, 根據(jù)指令計算分?jǐn)?shù)時, 未執(zhí)行到的指令一樣會被統(tǒng)計, 因此需要注意刪除無用指令, 以降低通關(guān)分?jǐn)?shù).

                如下圖, 30/24中, 前面的分?jǐn)?shù)為當(dāng)前指令得分, 后面的24為關(guān)卡標(biāo)準(zhǔn)分?jǐn)?shù).

            ip_5

                五, 菜單項

                I;P有三級菜單, 根據(jù)不同的場景顯示相關(guān)的菜單項;

                cmd_clean_up : 清除當(dāng)前指令

                cmd_more_up: 顯示更多菜單項

                cmd_info_up: 顯示關(guān)卡信息

               cmd_setup_up : 顯示游戲配置項

               cmd_close_up : 退出當(dāng)前關(guān)卡, 切換至關(guān)卡選擇界面

                cmd_back_up: 返回當(dāng)前關(guān)卡

               cmd_next_up : 退出當(dāng)前關(guān)卡, 切換至下一關(guān)卡

                cmd_share_up : 分享當(dāng)前通關(guān)界面

            ip_6

            cmd_enable_debug_downcmd_enable_debug_checked : 設(shè)置/取消Debug狀態(tài), 此狀態(tài)開啟, 可以使用'單步執(zhí)行'功能;

            cmd_debug_down : 處于Debug狀態(tài)時, 執(zhí)行一條指令, 執(zhí)行后自動暫停;

            cmd_debug_over_up : 處于Debug狀態(tài)時, 不再單步執(zhí)行指令, 而是直接執(zhí)行完畢;

                六, 配置項

                游戲有三個配置項:

                'Clock Speed': 時鐘速度, 就是指令執(zhí)行速度; 有三個檔位可以選擇;

                'Music': 開啟或關(guān)閉游戲背景音樂;

                'Sound': 開啟或關(guān)閉游戲內(nèi)置音效;

            ip_7

             

                七, 交流

                通過微信掃描下面二維碼, 即可加入'I;P'臨時群;

             

            wechat

               

                有任何問題和建議, 請跟帖或發(fā)mail來~謝謝了~

            posted on 2014-03-07 13:54 codejie 閱讀(1122) 評論(2)  編輯 收藏 引用 所屬分類: I;P

            評論

            # re: I;P : Online Manual 2014-03-28 21:47 江育齊

            關(guān)於棧的問題 問下最多訂用次數(shù)和深度?  回復(fù)  更多評論   

            # re: I;P : Online Manual 2014-03-28 23:30 codejie

            @江育齊
            目前深度是512, 超過會返回"stack overflow"錯誤; 實際情況下會有無限循環(huán)的可能, 比如兩個都為空的fx, 相互調(diào)用.  回復(fù)  更多評論   

            公告

            Using C++

            導(dǎo)航

            統(tǒng)計

            留言簿(73)

            隨筆分類(513)

            積分與排名

            最新評論

            閱讀排行榜

            評論排行榜

            久久久久久久国产免费看| 伊人热热久久原色播放www| 欧美亚洲另类久久综合婷婷| 亚洲狠狠婷婷综合久久蜜芽| 777午夜精品久久av蜜臀| 亚洲国产欧美国产综合久久| 人妻无码αv中文字幕久久| 91久久精品电影| 丁香色欲久久久久久综合网| www.久久热| 亚洲中文久久精品无码| 色综合久久天天综合| 久久久精品人妻一区二区三区四| 色婷婷综合久久久久中文| 久久ww精品w免费人成| 久久人人爽人爽人人爽av | 狠狠色丁香久久综合婷婷| 久久久WWW免费人成精品| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 亚洲精品成人久久久| 久久精品国产亚洲AV无码偷窥 | 久久久久无码精品| 久久精品亚洲一区二区三区浴池| 久久最近最新中文字幕大全| 亚洲欧美日韩精品久久亚洲区 | 欧美激情精品久久久久| 久久精品国产99国产精品导航| 久久综合九色综合欧美狠狠| 亚洲国产成人精品无码久久久久久综合| 久久只有这里有精品4| 久久精品国产只有精品2020| 无码国内精品久久综合88| 久久精品中文字幕一区| 久久精品三级视频| 国产激情久久久久影院老熟女| 久久99精品久久久久久不卡 | 午夜精品久久久久久中宇| 婷婷久久综合九色综合绿巨人| 久久青草国产手机看片福利盒子| 久久夜色精品国产噜噜麻豆| 97香蕉久久夜色精品国产|