色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

Python使用海龜繪圖實現貪吃蛇游戲

瀏覽:45日期:2022-06-16 13:17:08

在實現貪吃蛇游戲時,首先需要使用python內置的turtle模塊來實現創建游戲窗體與鍵盤按鍵的監聽工作,然后使用freegames模塊進行貪吃蛇的繪制工作。

1、turtle模塊

turtle模塊是python的內置模塊,所以在使用前需要使用import導入該模塊。代碼如下:

import turtle

(1) 創建游戲窗體可以使用turtle模塊中的setup()方法來實現。語法格式如下:

turtle.setup(width=_CFG['width'],height=_CFG['height'],startx=_CFG['leftright'],starty=_CFG['topbottom'])

參數說明如下:

width:表示窗體的寬度,如果是整數,大小以像素為單位,如果是浮動,則為屏幕的一小部分;默認值為屏幕的50%。 height:表示窗體的高度,如果是整數,高度以像素為單位,如果是浮動,則為屏幕的一小部分;默認值為屏幕的75%。 startx:表示窗體顯示在屏幕的橫向位置,如果為正,則以像素為單位從屏幕左邊緣開始,如果為負,則從右邊緣開始,如果沒有,則水平居中窗口。 starty:表示窗體顯示在屏幕的縱向位置,如果為正,則以像素為單位從屏幕上邊緣開始,如果為負,則從下邊緣開始,如果沒有,則垂直居中窗口。

創建游戲窗體的關鍵代碼如下:

import turtle # 導入繪圖海龜模塊turtle.setup(420, 420) # 創建窗體大小turtle.done() # 停止畫筆繪制,但繪圖窗體不關閉

(2)通過turtle模塊中的onkey()方法可以實現對應鍵盤中按鍵的監聽工作。語法格式如下:

turtle.onkey(fun,key)

參數說明如下:

fun:表示需要執行的方法。 key:該參數為字符串,表示鍵盤中對應的按鍵,例如“a”或“space”。

注意:在使用onkey()方法實現鍵盤的監聽時,還需要調用turtle.listen()方法即可實現鍵盤按鍵的監聽。

實現鍵盤中上、下、左、右按鍵監聽工作的關鍵代碼如下:

turtle.listen()# 事件監聽器turtle.onkey(lambda: change(10, 0), ’Right’) # 按鍵盤右鍵,蛇向右走turtle.onkey(lambda: change(-10, 0), ’Left’) # 按鍵盤左鍵,蛇向左走turtle.onkey(lambda: change(0, 10), ’Up’) # 按鍵盤上鍵,蛇向上走turtle.onkey(lambda: change(0, -10), ’Down’) # 按鍵盤下鍵,蛇向下走

2、freegames模塊

freegames模塊是第三方模塊,所以在使用前需要先通過以下命令進行模塊的安裝:

pip install freegames

模塊安裝完成以后,首先需要導入freegames模塊中的vector與square函數。代碼如下:

from freegames import vector,square # 導入向量類與繪圖函數

(1)通過freegames模塊中的vector()類可以根據指定的x、y坐標創建一個二維向量對象。vector()類的語法格式如下:

class freegames.vector(x,y)

參數說明如下:

x:表示橫向坐標。 y:表示縱向坐標。

實現定義游戲中的食物位置、蛇位置以及蛇移動的位置與距離。關鍵代碼如下:

food = vector(0,0)# 食物snake = [vector(10, 0)] # 蛇position = vector(0, -10) # 移動位置,一步的距離為10

(2)通過freegames模塊中square函數可以實現在(x,y)處繪制指定邊長大小的正方形,并填充指定顏色。square()函數的語法格式如下:

freegames.square(x,y,size,name)

參數說明如下:

x:表示橫向坐標。 y:表示縱向坐標。 size:表示繪制正方形的邊長。 name:表示填充顏色的名稱。

實現繪制游戲中食物、蛇。關鍵代碼如下:

square(body.x, body.y, 9, ’black’) # 繪制黑色蛇square(food.x, food.y, 9, ’green’) # 繪制綠色食物

實例

from random import randrange # 導入隨機函數from freegames import vector,square # 導入向量函數與繪圖函數import turtle # 導入繪圖海龜模塊food = vector(0,0)# 食物snake = [vector(10, 0)] # 蛇position = vector(0, -10) # 移動位置,一步的距離為10def change(x, y):# 改變蛇的移動方向 position.x = x position.y = ydef is_inside(head):# 判斷蛇頭是否在窗體內 return -200 < head.x < 190 and -200 < head.y < 190def move(): # 可以讓蛇移動的方法 head = snake[-1].copy() # 確定蛇頭的位置 head.move(position)# 移動一步 if not is_inside(head) or head in snake: # 如果蛇的頭部位于邊界外或者蛇頭在蛇的身體中square(head.x, head.y, 9, ’red’) # 繪制紅色蛇頭,說明游戲結束turtle.update() # 更新return snake.append(head) # 更新蛇的位置 if head == food: # 如果蛇吃到食物print(’Snake:’, len(snake)) # 根據蛇的長度進行加分food.x = randrange(-15, 15) * 10 # 隨機生成食物x坐標food.y = randrange(-15, 15) * 10 # 隨機生成食物y坐標 else:snake.pop(0) # 移除蛇走過的坐標 turtle.clear() # 清空蛇走過的位置 for body in snake: # 循環遍歷蛇的坐標square(body.x, body.y, 9, ’black’) # 繪制黑色蛇 square(food.x, food.y, 9, ’green’) # 繪制綠色食物 turtle.update() turtle.ontimer(move, 100) # 定時執行move函數if __name__ == ’__main__’: # 程序入口 turtle.setup(420, 420, 370, 0) # 創建窗體大小 turtle.hideturtle() # 隱藏箭頭顯示 turtle.tracer(False) # 關閉繪畫效果 move() # 調用讓蛇移動的方法 turtle.listen()# 事件監聽器 turtle.onkey(lambda: change(10, 0), ’Right’) # 按鍵盤右鍵,蛇向右走 turtle.onkey(lambda: change(-10, 0), ’Left’) # 按鍵盤左鍵,蛇向左走 turtle.onkey(lambda: change(0, 10), ’Up’) # 按鍵盤上鍵,蛇向上走 turtle.onkey(lambda: change(0, -10), ’Down’) # 按鍵盤下鍵,蛇向下走 turtle.done() # 停止畫筆繪制,但繪圖窗體不關閉

更多關于python游戲的精彩文章請點擊查看以下專題:

python俄羅斯方塊游戲集合

python經典小游戲匯總

python微信跳一跳游戲集合

更多有趣的經典小游戲實現專題,分享給大家:

C++經典小游戲匯總

JavaScript經典游戲 玩不停

java經典小游戲匯總

javascript經典小游戲匯總

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 亚洲天堂爱爱 | 在线观看的黄网 | 国产黄色片网站 | 亚洲自拍偷拍网 | 亚洲成av人片在线观看无码 | 久久综合亚洲一区二区三区 | 久久国产精品免费一区二区三区 | 91久久线看在观草草青青 | a级毛片免费观看在线播放 a级毛片免费看 | 精品亚洲成a人在线播放 | 午夜欧美在线 | 五月激激激综合网色播免费 | 最新国产午夜精品视频不卡 | 久久精品亚洲一区二区 | 久久狠狠一本精品综合网 | 一级特级欧美a毛片免费 | 国产一级毛片国语版 | 精品中文字幕一区在线 | 日韩欧美一及在线播放 | 国产精品嘿咻嘿咻在线播放 | 九九综合九九综合 | 欧美日韩综合精品一区二区三区 | 夜精品a一区二区三区 | 国产欧美日韩综合精品一区二区三区 | 久久精品一区二区三区中文字幕 | 久久亚洲成人 | 久久亚洲国产精品 | 免费人成在线观看 | 国产精品揄拍一区二区久久 | 一区二区三区免费视频网站 | 国产精品久久一区一区 | 亚州视频在线 | 国产亚洲精品国产一区 | 99视频在线观看高清 | 色站综合| 国产精品亚洲二区在线 | 国产一区二区精品久久91 | 亚洲精品国产三级在线观看 | 亚洲成a人片在线观看 欧美 | 国产欧美日韩在线观看精品 | 国产自精品在线 |