貪吃蛇 具體實現部分,大致分為三個模塊來介紹:游戲初始化、游戲運行(蛇移動、吃掉食物)、游戲結束
1,游戲初始化
首先,需對游戲中的 蛇、食物、游戲邊界、各元素顏色屬性、得分記錄、速度記錄 等進行初始化,初始的窗口大小設為(600,480),通過寬度為 1 的黑線將游戲窗口分為數個小方格(每個小方格大小為 (20,20))
初始化的蛇大小占連續3個小方格;食物占 1個小方格、初始時食物隨機放置在窗口內某一坐標處(當然需要排除蛇身區域外)
2,游戲得分
當游戲開始時需給與 **蛇 ** 運動方向設定為一個初始參數 ,這里以二維元組形式存儲,賦值給變量 p,共分為四種情況:
p = (1,0),向右;
P = (0,-1),向下;
p = (0,1),向上;
p = (-1,0),向左;
配合鍵盤事件響應,當用戶按下 上(w)、下(s)、左(a)、右(d)鍵時,程序會執行相應操作
for event in pygame.event.get():#事件刷新 if event.type == QUIT: sys.exit()#退出 elif event.type == KEYDOWN: if event.key == K_RETURN: if game_over: start = True game_over = False b =True snake = init_snake() food = create_food(snake) food_style = get_food_style() pos = (1,0)#方向 score = 0 last_move_time = time.time()#上次移動時間
elif event.key == K_SPACE: if not game_over: pause = not pause elif event.key in(K_w,K_UP): #判斷防止蛇向上移動時按了向下鍵,導致Game Over if b and not pos[1]: pos = (0,-1) b = False elif event.key in (K_s,K_DOWN): if b and not pos[1]: pos =(0,1) b = False elif event.key in (K_a,K_LEFT): if b and not pos[0]: pos = (-1,0) b =False elif event.key in (K_d,K_RIGHT): if b and not pos[0]: pos =(1,0) b = False
蛇身移動
程序將 蛇 所占所有小方格坐標依次存儲在一個隊列中,移動一次,隊列完成一次進出操作:隊尾刪除一個元素,對列頭部插入蛇頭所在的新方格坐標;
吃到食物
每吃到一次食物,蛇身多增加一個小方格區域,其隊列插入一個新元素、長度加一,
3,游戲結束
游戲終止的邊界條件為兩類
1,移動區域超出窗口邊界;
2,蛇頭碰到蛇身;
程序中用 布爾變量 game_over來標識游戲是否結束(True或者False),每次刷新頁面之前默認為 False,當游戲正常運行未發生以上兩類事件時設為True 游戲運行,否則游戲結束
為了提高游戲體驗,程序中用 score 變量表示得分,speed 來表示移動速度,得分每增加100 更新一次移動速度,隨著時間推移游戲難度也不斷加大
score += food_style[0] speed = orispeed - 0.03*(score//100) # 更新速度
責任編輯:haq
-
代碼
+關注
關注
30文章
4801瀏覽量
68728 -
python
+關注
關注
56文章
4798瀏覽量
84805
原文標題:100行代碼,實現python貪吃蛇
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論