亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python使用海龜繪圖實(shí)現(xiàn)貪吃蛇游戲

 更新時(shí)間:2021年06月18日 08:43:49   作者:Jiayu920716  
這篇文章主要為大家詳細(xì)介紹了Python使用海龜繪圖實(shí)現(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

在實(shí)現(xiàn)貪吃蛇游戲時(shí),首先需要使用python內(nèi)置的turtle模塊來實(shí)現(xiàn)創(chuàng)建游戲窗體與鍵盤按鍵的監(jiān)聽工作,然后使用freegames模塊進(jìn)行貪吃蛇的繪制工作。

1、turtle模塊

turtle模塊是python的內(nèi)置模塊,所以在使用前需要使用import導(dǎo)入該模塊。代碼如下:

import turtle

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

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

參數(shù)說明如下:

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

創(chuàng)建游戲窗體的關(guān)鍵代碼如下:

import turtle      # 導(dǎo)入繪圖海龜模塊
turtle.setup(420, 420)      # 創(chuàng)建窗體大小
turtle.done()       # 停止畫筆繪制,但繪圖窗體不關(guān)閉

(2)通過turtle模塊中的onkey()方法可以實(shí)現(xiàn)對應(yīng)鍵盤中按鍵的監(jiān)聽工作。語法格式如下:

turtle.onkey(fun,key)

參數(shù)說明如下:

  • fun:表示需要執(zhí)行的方法。
  • key:該參數(shù)為字符串,表示鍵盤中對應(yīng)的按鍵,例如“a”或“space”。

注意:在使用onkey()方法實(shí)現(xiàn)鍵盤的監(jiān)聽時(shí),還需要調(diào)用turtle.listen()方法即可實(shí)現(xiàn)鍵盤按鍵的監(jiān)聽。

實(shí)現(xiàn)鍵盤中上、下、左、右按鍵監(jiān)聽工作的關(guān)鍵代碼如下:

turtle.listen()                        # 事件監(jiān)聽器
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模塊是第三方模塊,所以在使用前需要先通過以下命令進(jìn)行模塊的安裝:

pip install freegames

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

from freegames import vector,square  # 導(dǎo)入向量類與繪圖函數(shù)

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

class freegames.vector(x,y)

參數(shù)說明如下:

  • x:表示橫向坐標(biāo)。
  • y:表示縱向坐標(biāo)。

實(shí)現(xiàn)定義游戲中的食物位置、蛇位置以及蛇移動(dòng)的位置與距離。關(guān)鍵代碼如下:

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

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

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

參數(shù)說明如下:

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

實(shí)現(xiàn)繪制游戲中食物、蛇。關(guān)鍵代碼如下:

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

實(shí)例

from random import randrange          # 導(dǎo)入隨機(jī)函數(shù)
from freegames import vector,square  # 導(dǎo)入向量函數(shù)與繪圖函數(shù)
import turtle                         # 導(dǎo)入繪圖海龜模塊

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

def change(x, y):        # 改變蛇的移動(dòng)方向
    position.x = x
    position.y = y

def is_inside(head):        # 判斷蛇頭是否在窗體內(nèi)
    return -200 < head.x < 190 and -200 < head.y < 190

def move():                   # 可以讓蛇移動(dòng)的方法
    head = snake[-1].copy()    # 確定蛇頭的位置
    head.move(position)        # 移動(dòng)一步
    if not is_inside(head) or head in snake:   # 如果蛇的頭部位于邊界外或者蛇頭在蛇的身體中
        square(head.x, head.y, 9, 'red')     # 繪制紅色蛇頭,說明游戲結(jié)束
        turtle.update()                      # 更新
        return
    snake.append(head)                       # 更新蛇的位置
    if head == food:                      # 如果蛇吃到食物
        print('Snake:', len(snake))       # 根據(jù)蛇的長度進(jìn)行加分
        food.x = randrange(-15, 15) * 10  # 隨機(jī)生成食物x坐標(biāo)
        food.y = randrange(-15, 15) * 10  # 隨機(jī)生成食物y坐標(biāo)
    else:
        snake.pop(0)            # 移除蛇走過的坐標(biāo)
    turtle.clear()              # 清空蛇走過的位置
    for body in snake:          # 循環(huán)遍歷蛇的坐標(biāo)
        square(body.x, body.y, 9, 'black') # 繪制黑色蛇
    square(food.x, food.y, 9, 'green')     # 繪制綠色食物
    turtle.update()
    turtle.ontimer(move, 100)           # 定時(shí)執(zhí)行move函數(shù)

if __name__ == '__main__':                  # 程序入口
    turtle.setup(420, 420, 370, 0)          # 創(chuàng)建窗體大小
    turtle.hideturtle()                     # 隱藏箭頭顯示
    turtle.tracer(False)                   # 關(guān)閉繪畫效果
    move()          # 調(diào)用讓蛇移動(dòng)的方法
    turtle.listen()                        # 事件監(jiān)聽器
    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()   # 停止畫筆繪制,但繪圖窗體不關(guān)閉

更多關(guān)于python游戲的精彩文章請點(diǎn)擊查看以下專題:

python俄羅斯方塊游戲集合

python經(jīng)典小游戲匯總

python微信跳一跳游戲集合

更多有趣的經(jīng)典小游戲?qū)崿F(xiàn)專題,分享給大家:

C++經(jīng)典小游戲匯總

JavaScript經(jīng)典游戲 玩不停

java經(jīng)典小游戲匯總

javascript經(jīng)典小游戲匯總

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

相關(guān)文章

  • python 地圖經(jīng)緯度轉(zhuǎn)換、糾偏的實(shí)例代碼

    python 地圖經(jīng)緯度轉(zhuǎn)換、糾偏的實(shí)例代碼

    這篇文章主要介紹了python 地圖經(jīng)緯度轉(zhuǎn)換、糾偏的實(shí)例代碼,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-08-08
  • 淺談Pytorch torch.optim優(yōu)化器個(gè)性化的使用

    淺談Pytorch torch.optim優(yōu)化器個(gè)性化的使用

    今天小編就為大家分享一篇淺談Pytorch torch.optim優(yōu)化器個(gè)性化的使用,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • Python?OpenCV實(shí)現(xiàn)圖片預(yù)處理的方法詳解

    Python?OpenCV實(shí)現(xiàn)圖片預(yù)處理的方法詳解

    這篇文章主要為大家詳細(xì)介紹了Python?OpenCV實(shí)現(xiàn)圖片預(yù)處理的方法,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,感興趣的可以了解一下
    2022-09-09
  • python讀取pdf格式文檔的實(shí)現(xiàn)代碼

    python讀取pdf格式文檔的實(shí)現(xiàn)代碼

    這篇文章主要給大家介紹了關(guān)于python讀取pdf格式文檔的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 使用Python操作Excel中圖片的基礎(chǔ)示例(插入、替換、提取、刪除)

    使用Python操作Excel中圖片的基礎(chǔ)示例(插入、替換、提取、刪除)

    Excel是主要用于處理表格和數(shù)據(jù)的工具,我們也能在其中插入、編輯或管理圖片,為工作表增添視覺效果,提升報(bào)告的吸引力,本文將詳細(xì)介紹如何使用Python操作Excel中的圖片,文中有詳細(xì)代碼示例供大家參考,需要的朋友可以參考下
    2024-07-07
  • Python?操作pdf?pdfplumber讀取PDF寫入Excel

    Python?操作pdf?pdfplumber讀取PDF寫入Excel

    這篇文章主要介紹了Python?操作pdf?pdfplumber讀取PDF寫入Excel,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以考察一下
    2022-08-08
  • python可以美化表格數(shù)據(jù)輸出結(jié)果的兩個(gè)工具

    python可以美化表格數(shù)據(jù)輸出結(jié)果的兩個(gè)工具

    這篇文章主要介紹了python可以美化表格數(shù)據(jù)輸出結(jié)果的兩個(gè)工具,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-06-06
  • 如何使用python批量修改文本文件編碼格式

    如何使用python批量修改文本文件編碼格式

    把文本文件的編碼格式進(jìn)行批量幻化,比如ascii, gb2312, utf8等,相互轉(zhuǎn)化,字符集的大小來看,utf8>gb2312>ascii,因此最好把gb2312轉(zhuǎn)為utf8,否則容易出現(xiàn)亂碼,這篇文章主要介紹了如何使用python批量修改文本文件編碼格式,需要的朋友可以參考下
    2023-03-03
  • 在Python中如何傳遞任意數(shù)量的實(shí)參的示例代碼

    在Python中如何傳遞任意數(shù)量的實(shí)參的示例代碼

    這篇文章主要介紹了在Python中如何傳遞任意數(shù)量的實(shí)參的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Pandas —— resample()重采樣和asfreq()頻度轉(zhuǎn)換方式

    Pandas —— resample()重采樣和asfreq()頻度轉(zhuǎn)換方式

    今天小編就為大家分享一篇Pandas —— resample()重采樣和asfreq()頻度轉(zhuǎn)換方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02

最新評論