用四個整數編寫一個貪吃蛇游戲( 二 )


這么看來 , 蛇的行為有點像隊列:
用四個整數編寫一個貪吃蛇游戲
文章圖片
當蛇移動并吃掉一個蘋果時 , 我們調用s_shape_add , 僅增加長度 , 并添加一個新的蛇尾s_tdir 。
主循環主循環如下所示 。
每當某個鍵按下時 , 就展開s_key_press , 檢查移動是否允許 , 然后更新s_chdir(使用s_chdir_set) 。
s_key_press有兩個輸入參數的作用是去除相反方向 。 例如 , 如果蛇當前向右移動(SR) , 那么SL就是不可能的輸入 , 從而中斷switch語句 。
移動蛇的函數move_snake()中實現了大部分邏輯:
為了驗證蛇是否可以在方格中移動 , 我們實現了check_*()函數:
check_l()檢查蛇的X坐標(s_hpos%8)是否大于上一個位置的X坐標;
check_r()檢查蛇的X坐標(s_hpos%8)是否小于上一個位置的X坐標;
check_u()和check_d()的原理相同 , 檢查增加s_hpos是否會導致溢出 。 如果溢出 , 表明移動超出了方格邊界 。 這里溢出當做一個特性使用 。
顯示蛇的函數【用四個整數編寫一個貪吃蛇游戲】這是需要實現的最后一個函數:

相關經驗推薦