前提條件:
需要安裝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檔案放在同一級...