import sys
import random
import pygame
from pygame.locals import *
# 目標方塊的顏色 紅色
redcolor = pygame.color(255, 0, 0)
# 遊戲介面的背景顏色 純黑色
blackcolor = pygame.color(0, 0, 0)
# 貪吃蛇的顏色 白色
whitecolor = pygame.color(255, 255, 255)
# 定義遊戲結束的函式
def gameover():
pygame.quit()
sys.exit()
# 定義main函式
def main():
# 初始化pygame
pygame.init()
# 定義乙個控制速度的函式
fpsclock = pygame.time.clock()
# 建立顯示層
playsu***ce = pygame.display.set_mode((640,480)) # 介面的大小
pygame.display.set_caption('貪吃蛇')
# 初始化蛇的位置
snake_position=[100,100]
# 初始化蛇的長度
snake_body = [[100,100],[80,100],[60,100]]
# 初始化目標方塊的位置
target_position = [300,300]
# 目標方塊的狀態
target_flag = 1
# 初始化乙個方向
direction = 'right'
# 定義蛇的方向變數
changedirection = direction
while true:
# pygame的互動模組和事件佇列
for event in pygame.event.get():
# 是否推出
if event.type == quit:
pygame.quit()
sys.exit()
# 判斷鍵盤事件
elif event.type == keydown:
if event.key == k_right:
changedirection = 'right'
if event.key == k_left:
changedirection = 'left'
if event.key == k_up:
changedirection = 'up'
if event.key == k_down:
changedirection = 'down'
if event.key == k_space:
pygame.event.post(pygame.event.event(quit))
# 根據鍵盤反應確定方向
if changedirection == 'left' and not direction == 'right':
direction = changedirection
if changedirection == 'right' and not direction == 'left':
direction = changedirection
if changedirection == 'up' and not direction == 'down':
direction = changedirection
if changedirection == 'down' and not direction == 'up':
direction = changedirection
# 根據方向移動蛇頭的座標
if direction == 'right':
snake_position[0] += 20
if direction == 'left':
snake_position[0] -= 20
if direction == 'up':
snake_position[1] -= 20
if direction == 'down':
snake_position[1] += 20
# 蛇與自身的碰撞檢測
for body in snake_body:
if snake_position[0] == body[0] and snake_position[1] == body[1]:
gameover()
# 蛇移動
snake_body.insert(0,list(snake_position))
if snake_position[0] == target_position[0] and snake_position[1] == target_position[1]:
target_flag = 0
else:
# 如果沒吃到,蛇尾彈出棧
snake_body.pop()
# 如果吃掉目標方塊,重新生成乙個目標方塊
if target_flag == 0:
x = random.randrange(1,32)
y = random.randrange(1,24)
# 20*20的畫素為乙個小矩形
target_position = [int(x*20),int(y*20)]
target_flag = 1
# 繪製顯示層
playsu***ce.fill(blackcolor)
# 繪製蛇
for position in snake_body:
pygame.draw.rect(playsu***ce, redcolor, rect(position[0],position[1],20,20))
# 畫目標方塊
pygame.draw.rect(playsu***ce, whitecolor, rect(target_position[0], target_position[1], 20, 20))
pygame.display.flip()
# 判斷死亡
if snake_position[0] > 620 or snake_position[1] < 0:
gameover()
elif snake_position[1] > 460 or snake_position[1] < 0:
gameover()
# 控制遊戲的速度
fpsclock.tick(5)
if __name__ == '__main__':
main()
Python 貪吃蛇遊戲
coding utf 8 引入turtle庫,製作snake,food的動畫 from turtle import 引入random庫,使food隨機出現 from random import randrange 引入freegames庫,這個庫中封裝了許多元素 我們可以使用正方形元素表示food,...
Python 遊戲 貪吃蛇
貪吃蛇是個非常簡單的遊戲,適合練手。先來看一下我的遊戲截圖 玩法介紹 回車鍵 開始遊戲 空格鍵 暫停 繼續 方向鍵 或 wsad 鍵 控制移動方向。食物分紅 綠 藍三種,分別對應 10 分 20 分 30 分,每吃乙個食物增加對應分值,每增加 100 分速度加快一級,沒有設定關卡,我玩到 1100 ...
貪吃蛇遊戲
貪吃蛇遊戲 結構化程式設計 c語言程式設計 重要的的是結構化的程式設計思想 include include include include include include define field width 300 就做20個格仔的 define field height 300 define f...