Python在線編譯器Lightly輕松實現(xiàn)貪吃蛇游戲
前言
今天我將帶領大家使用Python的Pygame庫在Lightly在線編譯器中實現(xiàn)一個經(jīng)典的貪吃蛇游戲。Lightly是一個非常方便的在線開發(fā)環(huán)境,無需安裝任何軟件,直接在瀏覽器中就能編寫和運行Python代碼。
https://www.lightlycode.com/python

一、環(huán)境準備
安裝Pygame庫
在Lightly中,我們首先需要安裝Pygame庫。雖然Lightly已經(jīng)預裝了許多常用庫,但為了確保最新版本,我們可以在終端中運行:
pip install pygame
Lightly的終端位于界面底部,點擊"+"號可以打開新終端。

二、貪吃蛇游戲實現(xiàn)
下面我將完整展示貪吃蛇游戲的代碼,并解釋關鍵部分:
import pygame
import random
# 初始化
pygame.init()
width, height = 400, 300
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("貪吃蛇 - 極簡中文版")
clock = pygame.time.Clock()
# 顏色定義
black = (0, 0, 0)
green = (0, 255, 0)
red = (255, 0, 0)
white = (255, 255, 255)
# 蛇和食物初始化
snake = [(width // 2, height // 2)]
food = (random.randint(0, (width - 10) // 10) * 10,
random.randint(0, (height - 10) // 10) * 10)
dx, dy = 10, 0 # 初始向右移動
# 字體設置(支持中文)
try:
font = pygame.font.Font(None, 30)
except:
pass
try:
font = pygame.font.SysFont("SimHei", 25) # 黑體
except:
font = pygame.font.SysFont("Microsoft YaHei", 25) # 微軟雅黑
if not font:
font = pygame.font.SysFont("arial", 25) # 兜底方案
# 游戲主循環(huán)
running = True
game_over = False
score = 0
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
# 游戲進行中的鍵盤控制
if not game_over:
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_UP and dy == 0:
dx, dy = 0, -10
elif event.key == pygame.K_DOWN and dy == 0:
dx, dy = 0, 10
elif event.key == pygame.K_LEFT and dx == 0:
dx, dy = -10, 0
elif event.key == pygame.K_RIGHT and dx == 0:
dx, dy = 10, 0
else:
# 游戲結束后的鍵盤控制
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_r:
# 重新開始
snake = [(width // 2, height // 2)]
food = (random.randint(0, (width - 10) // 10) * 10,
random.randint(0, (height - 10) // 10) * 10)
dx, dy = 10, 0
score = 0
game_over = False
elif event.key == pygame.K_q:
running = False
# 游戲結束畫面
if game_over:
screen.fill(black)
game_over_text = font.render("游戲結束!", True, red)
score_text = font.render(f"得分: {score}", True, white)
restart_text = font.render("按 R 重新開始, Q 退出", True, white)
screen.blit(game_over_text, (width // 2 - 60, height // 2 - 40))
screen.blit(score_text, (width // 2 - 50, height // 2))
screen.blit(restart_text, (width // 2 - 100, height // 2 + 40))
pygame.display.flip()
continue
# 蛇的移動邏輯
head = snake[0]
new_head = ((head[0] + dx) % width, (head[1] + dy) % height)
snake.insert(0, new_head)
# 食物檢測
if new_head == food:
food = (random.randint(0, (width - 10) // 10) * 10,
random.randint(0, (height - 10) // 10) * 10)
score += 1
else:
snake.pop()
# 碰撞檢測(撞到自己)
if snake[0] in snake[1:]:
game_over = True
# 繪制游戲畫面
screen.fill(black)
# 繪制蛇身
for part in snake:
pygame.draw.rect(screen, green, (*part, 10, 10))
# 繪制食物
pygame.draw.rect(screen, red, (*food, 10, 10))
# 顯示分數(shù)
score_surface = font.render(f"得分: {score}", True, white)
screen.blit(score_surface, (10, 10))
pygame.display.flip()
clock.tick(10) # 控制游戲速度
pygame.quit()

三、代碼解析
1. 初始化設置
pygame.init()初始化所有Pygame模塊- 創(chuàng)建400x300像素的游戲窗口
- 設置游戲標題為"貪吃蛇 - 極簡中文版"
- 定義了黑、綠、紅、白四種顏色
2. 游戲對象初始化
- 蛇初始位置在屏幕中央,用一個坐標列表表示
- 食物位置隨機生成,確保在網(wǎng)格對齊
- 初始移動方向向右(dx=10, dy=0)
3. 字體處理
特別處理了中文字體顯示問題,嘗試使用系統(tǒng)自帶的中文字體:
- 首先嘗試黑體(SimHei)
- 然后嘗試微軟雅黑(Microsoft YaHei)
- 最后回退到Arial(可能不支持中文)
4. 游戲主循環(huán)
事件處理
- 處理窗口關閉事件
- 游戲進行中:處理方向鍵控制(防止180度轉彎)
- 游戲結束后:按R重新開始,按Q退出
游戲邏輯
- 蛇的移動:計算新頭部位置,插入到蛇身列表開頭
- 食物檢測:如果吃到食物,增加分數(shù)并生成新食物;否則移除蛇尾
- 碰撞檢測:檢查蛇頭是否撞到自身
畫面渲染
- 清屏為黑色
- 繪制蛇身(綠色矩形)
- 繪制食物(紅色矩形)
- 顯示當前分數(shù)
5. 游戲速度控制
clock.tick(10) 控制游戲幀率為10FPS,使蛇的移動速度適中。
四、在Lightly中運行游戲
- 打開Lightly Python在線編譯器(https://www.lightlycode.com/python)
- 創(chuàng)建新Python文件,粘貼上述代碼
- 點擊運行按鈕
- 游戲窗口將在右側顯示區(qū)域彈出
五、游戲操作說明
方向鍵:控制蛇的移動方向
R鍵:游戲結束后重新開始
Q鍵:游戲結束后退出
六、可能的改進方向
- 增加游戲難度選擇
- 添加背景音樂和音效
- 實現(xiàn)關卡系統(tǒng)
- 添加障礙物
- 實現(xiàn)高分記錄功能
演示效果

七、總結
通過這個項目,我們學習了:
- 如何在Lightly在線環(huán)境中使用Pygame庫
- 貪吃蛇游戲的基本實現(xiàn)原理
- 游戲循環(huán)、事件處理和渲染的基本流程
- 中文字體處理的技巧
到此這篇關于Python在線編譯器Lightly輕松實現(xiàn)貪吃蛇游戲的文章就介紹到這了,更多相關Python Lightly實現(xiàn)貪吃蛇內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
使用Python字符串訪問與修改局部變量的實現(xiàn)代碼
這篇文章主要介紹了使用Python字符串訪問與修改局部變量,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-06-06
python?Django實現(xiàn)增刪改查實戰(zhàn)代碼
這篇文章主要介紹了python?Django增刪改查快速體驗,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-02-02

