著作權宣告:原創不易,本文禁止抄襲、轉載,侵權必究!
目錄
- 一、開發環境&需求分析
- 二、功能模塊
- 三、游戲效果
- 四、完整原始碼下載
- 五、作者Info
一、開發環境&需求分析
開發環境 :Windows10 Python3.6.4
第三方庫 :Pygame1.9.6
IDE :PyCharm/Sublime Text
需求分析:
- UI界面
- 速度、游戲得分
- 游戲邏輯
- 蛇的方向、食物
- 網格線、背景色
二、功能模塊
第三方庫的匯入:
import random
import sys
import time
import pygame
from pygame.locals import *
from collections import deque
游戲初始化及全域變數定義:
SCREEN_WIDTH = 600 # 螢屏寬度
SCREEN_HEIGHT = 480 # 螢屏高度
SIZE = 20 # 小方格大小
LINE_WIDTH = 1 # 網格線寬度
# 游戲區域的坐標范圍
SCOPE_X = (0, SCREEN_WIDTH // SIZE - 1)
SCOPE_Y = (2, SCREEN_HEIGHT // SIZE - 1)
# 食物的分值及顏色
FOOD_STYLE_LIST = [(10, (255, 100, 100)), (20, (100, 255, 100)), (30, (100, 100, 255))]
LIGHT = (100, 100, 100)
DARK = (200, 200, 200) # 蛇的顏色
BLACK = (0, 0, 0) # 網格線顏色
RED = (200, 30, 30) # 紅色,GAME OVER 的字體顏色
BGCOLOR = (40, 40, 60) # 背景色
初始化蛇:
# 初始化蛇
def init_snake():
snake = deque()
snake.append((2, SCOPE_Y[0]))
snake.append((1, SCOPE_Y[0]))
snake.append((0, SCOPE_Y[0]))
return snake
食物創建:
def create_food(snake):
food_x = random.randint(SCOPE_X[0], SCOPE_X[1])
food_y = random.randint(SCOPE_Y[0], SCOPE_Y[1])
while (food_x, food_y) in snake:
# 如果食物出現在蛇身上,則重來
food_x = random.randint(SCOPE_X[0], SCOPE_X[1])
food_y = random.randint(SCOPE_Y[0], SCOPE_Y[1])
return food_x, food_y
背景色:
# 填充背景色
screen.fill(BGCOLOR)
網格線:
# 畫網格線 豎線
for x in range(SIZE, SCREEN_WIDTH, SIZE):
pygame.draw.line(screen, BLACK, (x, SCOPE_Y[0] * SIZE), (x, SCREEN_HEIGHT), LINE_WIDTH)
# 畫網格線 橫線
for y in range(SCOPE_Y[0] * SIZE, SCREEN_HEIGHT, SIZE):
pygame.draw.line(screen, BLACK, (0, y), (SCREEN_WIDTH, y), LINE_WIDTH)
游戲精靈繪制:
# 畫食物
if not game_over:
# 避免 GAME OVER 的時候把 GAME OVER 的字給遮住了
pygame.draw.rect(screen, food_style[1], (food[0] * SIZE, food[1] * SIZE, SIZE, SIZE), 0)
# 畫蛇
for s in snake:
pygame.draw.rect(screen, DARK, (s[0] * SIZE + LINE_WIDTH, s[1] * SIZE + LINE_WIDTH,
SIZE - LINE_WIDTH * 2, SIZE - LINE_WIDTH * 2), 0)
print_text(screen, font1, 30, 7, f'速度: {score//100}')
print_text(screen, font1, 450, 7, f'得分: {score}')
主程式運行:
def main():
pygame.init()
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption('貪吃蛇')
font1 = pygame.font.SysFont('SimHei', 24) # 得分的字體
font2 = pygame.font.Font(None, 72) # GAME OVER 的字體
fwidth, fheight = font2.size('GAME OVER')
三、游戲效果

四、完整原始碼下載
pygame游戲開發原始碼下載:
- 關注我的原創微信公眾號:『小鴻星空科技』,回復『貪吃蛇』獲取原始碼
五、作者Info
作者:小鴻的摸魚日常,Goal:讓編程更有趣!
原創微信公眾號:『小鴻星空科技』,專注于演算法、爬蟲,網站,游戲開發,資料分析、自然語言處理,AI等,期待你的關注,讓我們一起成長、一起Coding!
著作權說明:本文禁止抄襲、轉載 ,侵權必究!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/394617.html
標籤:其他
