App下載

python實戰(zhàn)之利用pygame實現(xiàn)貪吃蛇游戲(一)

萌癌蘿莉 2021-08-13 17:14:46 瀏覽數(shù) (2196)
反饋

相信很多小伙伴學(xué)習(xí)編程的一大目的是為了開發(fā)游戲。今天我們就來介紹一篇關(guān)于利用pygame實現(xiàn)貪吃蛇游戲的python實戰(zhàn)教程,想要開發(fā)游戲的小伙伴們可以趕緊學(xué)起來了。

一、前言

之前嘗試了自己用pygame寫井字棋,這次玩的是貪吃蛇系列。
個人感覺模塊可能會比較大,所以選擇將函數(shù)和主要邏輯代碼分在了兩個文件中。

文件結(jié)構(gòu)

fuc為函數(shù)模塊,存儲了事件感應(yīng)和刷新界面等部分。
main模塊則是游戲的核心。

二、搭建界面

這里我就不重復(fù)了,可以先看一下這篇博客
其中界面的基本要素都有。

main.py

import pygame
from fuc import *
# 基本屬性
lattice_wh = 20 #長寬
snake_color = (84, 255, 159)
food_color = (255, 64, 64)

# 繪制界面
pygame.init()
screen = pygame.display.set_mode((25*lattice_wh,25*lattice_wh))
pygame.display.set_caption('貪吃蛇')

# 游戲狀態(tài)
game_stats = 1

while game_stats:
    update(screen,lattice_wh)
    check_events()

這次,我準(zhǔn)備繪制一個25*25個格子的界面,每一個格子的長寬都為20。
這次的繪制方式和之前不一樣,我準(zhǔn)備使用的是pygame.draw.line()函數(shù),來繪制一條條的直線。
傳入?yún)?shù):
界面(screen)
rbg顏色(我這里是(105, 105, 105),是淡灰色,吧)
起始點(diǎn)坐標(biāo)、結(jié)束點(diǎn)坐標(biāo)(坐標(biāo)系在上面博客都有)

代碼部分:(放在update函數(shù)中,因為每一次刷新都需要重新繪制網(wǎng)格)

def update(screen,lattice_wh):
    """屏幕刷新"""
    # 背景顏色
    screen.fill((255,255,255))
    # 繪制網(wǎng)格
    for i in range(25):
        pygame.draw.line(screen,(105, 105, 105),(0,lattice_wh*i),(500,lattice_wh*i))
    for i in range(25):
        pygame.draw.line(screen,(105, 105, 105),(lattice_wh*i,0),(lattice_wh*i,500))
    pygame.display.flip()

fuc模塊:

import pygame
import sys
"""存儲了相關(guān)的函數(shù)"""
def update(screen,lattice_wh):
    """屏幕刷新"""
    # 背景顏色
    screen.fill((255,255,255))
    # 繪制網(wǎng)格
    for i in range(25):
        pygame.draw.line(screen,(105, 105, 105),(0,lattice_wh*i),(500,lattice_wh*i))
    for i in range(25):
        pygame.draw.line(screen,(105, 105, 105),(lattice_wh*i,0),(lattice_wh*i,500))
    pygame.display.flip()

def check_events():
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            sys.exit()

三、運(yùn)行結(jié)果

運(yùn)行結(jié)果

四、結(jié)語

目前我們已經(jīng)結(jié)束了界面搭建,接下來的部分我將實現(xiàn)邏輯。囿于篇幅所限,接下來的部分請查看這篇文章,也請繼續(xù)關(guān)注W3Cschool后續(xù)文章!



0 人點(diǎn)贊