欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python實現(xiàn)貪吃蛇小游戲

 更新時間:2020年03月21日 13:44:43   作者:DonQuixote_  
這篇文章主要為大家詳細介紹了python實現(xiàn)貪吃蛇小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

關于編寫游戲,是博主非常向往的東西(博主喜愛游戲),編寫游戲得一步一步的走!今天我簡單的編寫一下非常經(jīng)典的游戲貪吃蛇?。。。?/p>

效果圖:

首先引入pygame模塊

pip install pygame

關于編寫貪吃蛇有如下幾個步驟!依次思考

1、設置背景大小,即游戲框大小,---像素(px)

2、設置顏色,蛇的顏色,背景顏色,豆子的顏色

#pygame游戲庫,sys操控python運行的環(huán)境
import pygame,sys,random
#這個模塊包含所有pygame所使用的常亮
from pygame.locals import *
#1,定義顏色變量
#0-255 0黑色 255白色
redColor = pygame.Color(255,0,0)
#背景為黑色
blackColor = pygame.Color(0,0,0)
#貪吃蛇為白色
whiteColor = pygame.Color(255,255,255)

3、設置蛇的初始位置和長度,豆子的初始位置及被吃后隨機出現(xiàn)的位置(如下),及蛇的速度

4、設置按鍵,控制蛇的上下左右

5、設置蛇通過與豆子的位置重合判斷是否吃了豆子,此時蛇長度加一,豆子消失同時隨機出現(xiàn)

6、設置開始函數(shù)(1,,3,4,5都可以設置在開始函數(shù)里),結束函數(shù),并判斷死亡方式,及游戲結束方式(直接退出,或者游戲結束)

def main():
 #初始化pygame
 pygame.init()
 #定義一個變量來控制速度
 fpsClock=pygame.time.Clock()
 #創(chuàng)建pygame顯示層,創(chuàng)建一個界面
 playsurface=pygame.display.set_mode((640,480))
 pygame.display.set_caption('貪吃蛇')
 #初始化變量
 #貪吃蛇初始坐標位置 (先以100,100為基準)
 snakePosition = [100,100]
 #初始化貪吃蛇的長度列表中有個元素就代表有幾段身體
 snakeBody = [[100,100],[80,100],[60,100]]
 #初始化目標方向額位置
 targetPosition = [300,300]
 #目標方塊的標記 目的:判斷是否吃掉了這個目標方塊1 就是沒有吃 0就是吃掉
 targetflag = 1
 #初始化方向 --》往右
 direction = 'right'
 #定義一個方向變量(人為控制 按鍵)
 changeDirection = direction
def gameover(): #游戲結束
 pygame.quit()
 sys.exit()

關于游戲運行可以當做一個時間,通過不斷地循環(huán)是蛇不斷地前進(設置按鍵,憑個人喜好按鍵)

 while True:
 
  for event in pygame.event.get(): #從隊列中獲取事件
   if event.type == QUIT:
    pygame.quit()
    sys.exit()
   elif event.type == KEYDOWN:
    if event.key == K_d:
     changeDirection = 'right'
    if event.key == K_a:
     changeDirection = 'left'
    if event.key ==K_w:
     changeDirection = 'up'
    if event.key ==K_s:
     changeDirection = 'down'
     #對應鍵盤上的esc文件
    if event.key == K_ESCAPE:
     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

這里通過像素的加減確定蛇頭的移動向上或向下加減20px相當于向上下移動一步

#根據(jù)方向移動蛇頭
  if direction =='right':
   snakePosition[0] +=20
  if direction =='left':
   snakePosition[0] -=20
  if direction =='up':
   snakePosition[1] -=20
  if direction =='down':
   snakePosition[1] +=20
  #增加蛇的長度
  snakeBody.insert(0,list(snakePosition))
  #如果貪吃蛇和目標方塊的位置重合
  if snakePosition[0] == targetPosition[0] and snakePosition[1] ==targetPosition[1]:
   targetflag= 0
  else:
   snakeBody.pop()
  if targetflag ==0:
   x = random.randrange(1,32)
   y = random.randrange(1,24)
   targetPosition = [int(x*20),int(y*20)]
   targetflag =1
  #填充背景顏色
  playsurface.fill(blackColor)

設置蛇與豆子的顏色長寬

for position in snakeBody:
   #第一個參數(shù)serface指定一個serface編輯區(qū),在這個區(qū)域內(nèi)繪制
   #第二個參數(shù)color:顏色
   #第三個參數(shù):rect:返回一個矩形(xy),(width,height)
   #第四個參數(shù):width:表示線條的粗細 width0填充 實心
   #化蛇
   pygame.draw.rect(playsurface,redColor,Rect(position[0],position[1],20,20))
   pygame.draw.rect(playsurface, whiteColor, Rect(targetPosition[0], targetPosition[1], 20, 20))

將上面的所作為顯示到桌面,通過下面的方法實現(xiàn)

pygame.display.flip()

判斷游戲結束

 if snakePosition[0] > 620 or snakePosition[0] < 0:
   gameover()
  elif snakePosition[1] >460 or snakePosition[1] <0:
   gameover()
  #控制游戲速度
  fpsClock.tick(2)

基本的貪吃蛇步驟如上,如果要是添加得分或者開始和結束界面都憑自身能力了,大佬們肯定是灑灑水了

以下是完整代碼

#pygame游戲庫,sys操控python運行的環(huán)境
import pygame,sys,random
#這個模塊包含所有pygame所使用的常亮
from pygame.locals import *
#1,定義顏色變量
#0-255 0黑色 255白色
redColor = pygame.Color(255,0,0)
#背景為黑色
blackColor = pygame.Color(0,0,0)
#貪吃蛇為白色
whiteColor = pygame.Color(255,255,255)
 
 
#定義游戲結束的函數(shù)
def gameover():
 pygame.quit()
 sys.exit()
#定義main函數(shù)--》定義我們的入口函數(shù)
def main():
 #初始化pygame
 pygame.init()
 #定義一個變量來控制速度
 fpsClock=pygame.time.Clock()
 #創(chuàng)建pygame顯示層,創(chuàng)建一個界面
 playsurface=pygame.display.set_mode((640,480))
 pygame.display.set_caption('貪吃蛇')
 #初始化變量
 #貪吃蛇初始坐標位置 (先以100,100為基準)
 snakePosition = [100,100]
 #初始化貪吃蛇的長度列表中有個元素就代表有幾段身體
 snakeBody = [[100,100],[80,100],[60,100]]
 #初始化目標方向額位置
 targetPosition = [300,300]
 #目標方塊的標記 目的:判斷是否吃掉了這個目標方塊1 就是沒有吃 0就是吃掉
 targetflag = 1
 #初始化方向 --》往右
 direction = 'right'
 #定義一個方向變量(人為控制 按鍵)
 changeDirection = direction
 while True:
 
  for event in pygame.event.get(): #從隊列中獲取事件
   if event.type == QUIT:
    pygame.quit()
    sys.exit()
   elif event.type == KEYDOWN:
    if event.key == K_d:
     changeDirection = 'right'
    if event.key == K_a:
     changeDirection = 'left'
    if event.key ==K_w:
     changeDirection = 'up'
    if event.key ==K_s:
     changeDirection = 'down'
     #對應鍵盤上的esc文件
    if event.key == K_ESCAPE:
     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
 
  #根據(jù)方向移動蛇頭
  if direction =='right':
   snakePosition[0] +=20
  if direction =='left':
   snakePosition[0] -=20
  if direction =='up':
   snakePosition[1] -=20
  if direction =='down':
   snakePosition[1] +=20
  #增加蛇的長度
  snakeBody.insert(0,list(snakePosition))
  #如果貪吃蛇和目標方塊的位置重合
  if snakePosition[0] == targetPosition[0] and snakePosition[1] ==targetPosition[1]:
   targetflag= 0
  else:
   snakeBody.pop()
  if targetflag ==0:
   x = random.randrange(1,32)
   y = random.randrange(1,24)
   targetPosition = [int(x*20),int(y*20)]
   targetflag =1
  #填充背景顏色
  playsurface.fill(blackColor)
  for position in snakeBody:
   #第一個參數(shù)serface指定一個serface編輯區(qū),在這個區(qū)域內(nèi)繪制
   #第二個參數(shù)color:顏色
   #第三個參數(shù):rect:返回一個矩形(xy),(width,height)
   #第四個參數(shù):width:表示線條的粗細 width0填充 實心
   #化蛇
   pygame.draw.rect(playsurface,redColor,Rect(position[0],position[1],20,20))
   pygame.draw.rect(playsurface, whiteColor, Rect(targetPosition[0], targetPosition[1], 20, 20))
 
  #更新顯示到屏幕表面
  pygame.display.flip()
  #判斷是否游戲結束
  if snakePosition[0] > 620 or snakePosition[0] < 0:
   gameover()
  elif snakePosition[1] >460 or snakePosition[1] <0:
   gameover()
  #控制游戲速度
  fpsClock.tick(2)
# 啟動入口函數(shù)
if __name__ =='__main__':
 main() 

運行結果:

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Python如何破解壓縮包密碼

    Python如何破解壓縮包密碼

    破解rar和zip壓縮包。Windows下使用PyCharm軟件,本文給大家詳細介紹Python如何破解壓縮包密碼,感興趣的朋友一起看看吧
    2022-05-05
  • Python 中使用 Selenium 單擊網(wǎng)頁按鈕功能

    Python 中使用 Selenium 單擊網(wǎng)頁按鈕功能

    Selenium是一個用于測試網(wǎng)站的自動化測試工具,支持各種瀏覽器包括Chrome、Firefox、Safari等主流界面瀏覽器,同時也支持phantomJS無界面瀏覽器,本篇文章將介紹如何在 Python 中使用 selenium 單擊網(wǎng)頁上的按鈕,感興趣的朋友一起看看吧
    2023-11-11
  • Python+Turtle實現(xiàn)繪制勾股樹

    Python+Turtle實現(xiàn)繪制勾股樹

    畢達哥拉斯樹,也叫“勾股樹”,是由畢達哥拉斯根據(jù)勾股定理所畫出來的一個可以無限重復的樹形圖形。本文將利用Python中的Turtle庫實現(xiàn)勾股樹的繪制,感興趣的可以了解一下
    2023-01-01
  • 使用pytorch實現(xiàn)線性回歸

    使用pytorch實現(xiàn)線性回歸

    這篇文章主要為大家詳細介紹了使用pytorch實現(xiàn)線性回歸,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • Python中的if判斷語句中包含or問題

    Python中的if判斷語句中包含or問題

    這篇文章主要介紹了Python中的if判斷語句中包含or問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 在Linux上安裝Python的Flask框架和創(chuàng)建第一個app實例的教程

    在Linux上安裝Python的Flask框架和創(chuàng)建第一個app實例的教程

    這篇文章主要介紹了在Linux上安裝Python的Flask框架和創(chuàng)建第一個app實例,包括創(chuàng)建一個HTML模版和利用Jinja2模板引擎來做渲染的步驟,需要的朋友可以參考下
    2015-03-03
  • Flask模擬實現(xiàn)CSRF攻擊的方法

    Flask模擬實現(xiàn)CSRF攻擊的方法

    這篇文章主要介紹了Flask模擬實現(xiàn)CSRF攻擊的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • Django權限控制的使用

    Django權限控制的使用

    這篇文章主要介紹了Django權限控制的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • Python cookbook(數(shù)據(jù)結構與算法)找出序列中出現(xiàn)次數(shù)最多的元素算法示例

    Python cookbook(數(shù)據(jù)結構與算法)找出序列中出現(xiàn)次數(shù)最多的元素算法示例

    這篇文章主要介紹了Python cookbook(數(shù)據(jù)結構與算法)找出序列中出現(xiàn)次數(shù)最多的元素算法,涉及Python collections模塊中的Counter類相關使用技巧與操作注意事項,需要的朋友可以參考下
    2018-03-03
  • Python中Tkinter布局管理grid的使用

    Python中Tkinter布局管理grid的使用

    本文主要介紹了Python中Tkinter布局管理grid的使用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01

最新評論