學習Python開發小遊戲(四) 貪吃蛇

2021-10-10 16:00:14 字數 3315 閱讀 6929

前提條件:

需要安裝pygame,pgzero,numpy(windows:1.19.3)

功能:1.初始化介面顯示小蛇和食物

2.鍵盤控制角色的上下左右(wasd或者上下左右)移動,當小蛇吃掉食物後蛇身長度加1同時重置食物位置

3.統計小蛇吃掉食物的個數,每吃掉乙個食物分數加1,同時在介面顯示分數

5.遊戲失敗,介面顯示對應資訊,同時停止遊戲

附:**中涉及到的素材來自非同步社群:《python遊戲趣味程式設計》一書中提供的素材:

以下是**:

import pgzrun, time, random

tile_size = 20

title = '貪吃蛇'

width = 40 * tile_size

height = 30 * tile_size

# 儲存蛇頭和蛇身

snake_list =

snake_head = actor('snake1') # 匯入蛇頭

snake_head.x = width / 2 # 蛇頭的x座標

snake_head.y = height / 2 # 蛇頭的y座標

# 新增蛇身

for i in range(4): # 再為蛇新增4段蛇身

snake_body = actor('snake1') # 匯入蛇身

snake_body.x = snake_list[i].x - tile_size # 蛇身的x座標

snake_body.y = snake_list[i].y # 蛇身的y座標

# 匯入食物

cookie = actor('cookie')

cookie.x = random.randint(10, 30) * tile_size # 食物的x座標

cookie.y = random.randint(10, 30) * tile_size # 食物的y座標

# 初始化蛇的移動方向,控制蛇的移動方向

direction = 'right'

# 遊戲是否失敗

isloose = false

# 遊戲得分

score = 0

def draw():

screen.clear() # 清除螢幕

for snake in snake_list: # 繪製蛇

snake.draw()

cookie.draw() # 繪製食物

screen.draw.text("得分:" + str(score), (350, 550), fontsize=30, fontname='s', color='green')

if isloose: # 顯示遊戲失敗資訊

screen.draw.text("game over !", (250, 250), fontsize=80, color='red')

def update():

global direction

# 改變蛇身的顏色

# 遊戲結束直接返回

if isloose:

return

# 蛇的移動方向

if keyboard.left or keyboard.a:

direction = 'left'

if keyboard.right or keyboard.d:

direction = 'right'

if keyboard.up or keyboard.w:

direction = 'up'

if keyboard.down or keyboard.s:

direction = 'down'

def move_snake():

global direction, isloose, score

# 遊戲結束直接返回

if isloose:

return

new_snake = actor('snake1') # 建立新蛇頭

# 根據蛇的移動方向確定蛇身的座標

if direction == 'right': # 向右移動

new_snake.x = snake_list[0].x + tile_size

new_snake.y = snake_list[0].y

if direction == 'left': # 向左移動

new_snake.x = snake_list[0].x - tile_size

new_snake.y = snake_list[0].y

if direction == 'up': # 向上移動

new_snake.x = snake_list[0].x

new_snake.y = snake_list[0].y - tile_size

if direction == 'down': # 向下移動

new_snake.x = snake_list[0].x

new_snake.y = snake_list[0].y + tile_size

# 當蛇頭超出邊框時遊戲失敗

if new_snake.y < 0 or new_snake.y > height or new_snake.x < 0 or new_snake.x > width:

isloose = true

# 當蛇頭碰到自身時,遊戲失敗

for snake in snake_list: # 對所有蛇身迴圈,判斷是否和蛇頭座標一致

if new_snake.x == snake.x and new_snake.y == snake.y:

isloose = true

break

# 當蛇頭碰到食物時,蛇身加1,也就是不刪除蛇尾,同時重置餅乾位置

if new_snake.x == cookie.x and new_snake.y == cookie.y:

cookie.x = random.randint(5, 35) * tile_size

cookie.y = random.randint(5, 25) * tile_size

score = score + 1 # 得分加1

else: # 否則,刪除掉舊蛇尾

del snake_list[len(snake_list) - 1]

snake_list.insert(0, new_snake) # 把新蛇頭加到列表的最前面

# 下一次隔0.2秒呼叫

clock.schedule_unique(move_snake, 0.2)

move_snake()

pgzrun.go() # 開始執行遊戲

益智小遊戲 Python 四

本文參考自力扣題目 給定乙個非負整數 num。對於 0 i num 範圍中的每個數字 i 計算其二進位制數中的 1 的數目並將它們作為陣列返回。以下是leecode官方解答 妙啊!給定一些標記了寬度和高度的信封,寬度和高度以整數對形式 w,h 出現。當另乙個信封的寬度和高度都比這個信封大的時候,這個...

python學習 小遊戲

基於python3.4 while迴圈 1 usr bin python32 coding utf 8 34 import random 5import sys6 importos7 8 lucky num int random.randint 0,9 9 guess count 0 10 os.s...

學習Python開發小遊戲(一) 見縫插針

需要安裝的模組 pygame,pgzero,numpy 1.19.3 注意以下幾點 1.windows安裝numpy的時候需要安裝numpy 1.19.3版本,要不然會報錯 2.需要放在images資料夾中,音訊放在music資料夾中 3.images和music資料夾需要和新建的py檔案放在同一級...