Python 贪吃蛇 代码
生活随笔
收集整理的這篇文章主要介紹了
Python 贪吃蛇 代码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#!/usr/bin/env python
# -*- coding: utf-8 -*-import pygame as pygame
import random
import sysfrom pygame.rect import Rectclass Snake(object):def __init__(self): # 定義3個 顏色屬性,以防后面需要self.black = pygame.Color(0, 0, 0) # 背景顏色self.green = pygame.Color(0, 255, 0) # 目標方塊顏色self.white = pygame.Color(255, 255, 255) # 蛇顏色def gameover(self):pygame.quit()sys.exit()def initialize(self):pygame.init() # 初始化,就是初始化 pygame 里面的東西,沒啥鳥用,但是沒它不行,哈哈哈哈clock = pygame.time.Clock() # 創建時鐘對象 (可以控制游戲循環頻率playSurface = pygame.display.set_mode((800, 600)) # 創建游戲窗口pygame.display.set_caption('貪吃蛇') # 窗口名snakePosition = [80, 80] # 貪吃蛇的頭snakebody = [[80, 80], [60, 80], [40, 80]] # 初始化貪吃蛇的長度 (注:這里以20*20為一個標準小格子)targetPosition = [200, 400] # 綠色方塊目標位置targetflag = 1direction = 'right' # 初始化移動方向""" 注: 上面的屬性啥的,定義是定義了, 但是 是靜態的 還動不了,,而且 還沒有顏色,黑麻麻的,,,所以才有了 下面的 這 一個 def main() 函數 ,我們 通過 main方法 讓他們 嗨起來,五光十色,懂了嗎?兄弟萌?"""changeDirection = direction # 輸入的 方向self.main(snakebody, targetPosition, targetflag, direction, changeDirection, snakePosition, playSurface, clock)def main(self, snakebody, targetPosition, targetflag, direction, changeDirection, snakePosition, playSurface,clock):# 所有事件全部放到一個實時循環中while True:for event in pygame.event.get(): # 接收到退出事件后,退出程序# pygame.event.get() ,監聽用戶事件,看用戶在鍵盤上干了啥事if event.type == pygame.QUIT:pygame.quit()sys.exit()elif event.type == pygame.KEYDOWN: # 根據輸入,進行上下左右移動if event.key == pygame.K_RIGHT:changeDirection = 'right'print("向右轉")if event.key == pygame.K_LEFT:changeDirection = 'left'print("向左轉")if event.key == pygame.K_DOWN:changeDirection = 'down'print("向上走")if event.key == pygame.K_UP:changeDirection = 'up'print("向下走")if event.key == pygame.K_ESCAPE:pygame.event.post(pygame.event.Event(pygame.QUIT))if (changeDirection == 'left' and not direction == 'right'):# 如果改變后的移動方向是 left ,而原來的移動不是向 right, 則將方向 調為 leftdirection = changeDirectionif (changeDirection == 'right' and not direction == 'left'):direction = changeDirectionif (changeDirection == 'down' and not direction == 'up'):direction = changeDirectionif (changeDirection == 'up' and not direction == 'down'):direction = changeDirection# 根據鍵盤的輸入,改變蛇的頭部,進行轉彎操作if direction == 'right':snakePosition[0] += 20if direction == 'left':snakePosition[0] -= 20if direction == 'down':snakePosition[1] += 20if direction == 'up':snakePosition[1] -= 20# 將蛇的頭部當前位置加入到蛇身的列表中,增加蛇的長度snakebody.insert(0, list(snakePosition))# 如果蛇頭與食物的位置重合,則判定吃到食物,將食物數量清零;而沒吃到食物的話,蛇身就會跟著蛇頭運動,蛇身的最后一節將被踢出列表if (snakePosition[0] == targetPosition[0] and snakePosition[1] == targetPosition[1]): # 吃到綠色塊targetflag = 0else:snakebody.pop() # 沒吃到綠塊if targetflag == 0: # 如果吃到綠色塊,則重新生成新的綠色塊x = random.randrange(1, 40)y = random.randrange(1, 30)targetPosition = [int(x * 20), int(y * 20)] # 綠色塊位置targetflag = 1 # 用來判斷是否吃到綠色塊,吃到則為0,否則為1# 填充背景顏色playSurface.fill(self.black)for position in snakebody:"""在Surface上繪制矩形,第二個參數是線條(或填充)的顏色,第三個參數Rect的形式是((x, y), (width, height)),表示的是所繪制矩形的區域,其中第一個元組(x, y)表示的是該矩形左上角的坐標,第二個元組 (width, height)表示的是矩形的寬度和高度。width表示線條的粗細,單位為像素;默認值為0,表示填充矩形內部# 第一個參數surface 指定一個surface編輯區# 第二個參數color 指定顏色# 第三個參數rect 返回一個矩形包含位置信息(x,y),(width,height)# 第四個參數width 表示線條的粗細 width=0 實心 width=1 空心# 畫蛇# 畫目標方塊兒"""# 畫蛇 ,,,就是把蛇行走的身形畫出來pygame.draw.rect(playSurface, self.white, Rect(position[0], position[1], 20, 20))# 畫目標方塊兒# print(targetPosition[0]) 你運行一下就知道了# print(targetPosition[1])pygame.draw.rect(playSurface, self.green, Rect(targetPosition[0], targetPosition[1], 20, 20))# 更新顯示到屏幕pygame.display.flip()# 判斷游戲結束if (snakePosition[0] > 900 or snakePosition[0] < 0): # 窗口 長snake.gameover()elif (snakePosition[1] > 800 or snakePosition[0] < 0): # 窗口 寬snake.gameover()for i in snakebody[1:]: # 撞到自己if (snakePosition[0] == i[0] and snakePosition[1] == i[1]): # 當蛇頭的位置(像素)與蛇身 一樣時,即可判定它們相撞了snake.gameover()# 控制蛇行走速度clock.tick(6)snake = Snake()
snake.initialize()
注:代碼不是本人所寫,如有侵權,請告知我刪除,謝謝!
總結
以上是生活随笔為你收集整理的Python 贪吃蛇 代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Tensorflow2.0之FGSM
- 下一篇: 【Arduino】基于Arduino的循