最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

1、turtle模塊

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

import turtle

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

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

參數說明如下:

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

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

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

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

turtle.onkey(fun,key)

參數說明如下:

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

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

實現鍵盤中上、下、左、右按鍵監(jiā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模塊是第三方模塊,所以在使用前需要先通過以下命令進行模塊的安裝:

pip install freegames

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

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

(1)通過freegames模塊中的vector()類可以根據指定的x、y坐標創(chuàng)建一個二維向量對象。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) # 移動位置,一步的距離為10

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

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

def 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:          # 循環(huán)遍歷蛇的坐標
        square(body.x, body.y, 9, 'black') # 繪制黑色蛇
    square(food.x, food.y, 9, 'green')     # 繪制綠色食物
    turtle.update()
    turtle.ontimer(move, 100)           # 定時執(zhí)行move函數

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

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

python俄羅斯方塊游戲集合

python經典小游戲匯總

python微信跳一跳游戲集合

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

C++經典小游戲匯總

JavaScript經典游戲 玩不停

java經典小游戲匯總

javascript經典小游戲匯總

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

相關文章

  • 詳解python模塊pychartdir安裝及導入問題

    詳解python模塊pychartdir安裝及導入問題

    這篇文章主要介紹了python模塊pychartdir導入問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • python3.5仿微軟計算器程序

    python3.5仿微軟計算器程序

    這篇文章主要為大家詳細介紹了python3.5仿微軟計算器程序的相關資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • 淺談Python3.10 和 Python3.9 之間的差異

    淺談Python3.10 和 Python3.9 之間的差異

    多年來,Python 進行了大量升級,并且在新版本中添加了許多功能。本文就詳細的介紹 一下Python3.10 和 Python3.9差異,感興趣的朋友可以了解一下
    2021-09-09
  • python操作jira添加模塊的方法

    python操作jira添加模塊的方法

    在開發(fā)工作中,Jira通常用作BUG管理和任務跟蹤管理等,項目經理,測試人員,開發(fā)人員等在Jira上進行提交BUG,提交任務,修改任務進度等操作.本文重點給大家介紹python操作jira添加模塊的方法,感興趣的朋友一起看看吧
    2022-03-03
  • Python 中Django驗證碼功能的實現代碼

    Python 中Django驗證碼功能的實現代碼

    驗證碼是一種區(qū)分用戶是計算機還是人的公共全自動程序,很多用戶登錄和注冊系統(tǒng)都提供了圖形驗證碼功能。這篇文章主要介紹了Python 中Django驗證碼功能的實現代碼,需要的朋友可以參考下
    2019-06-06
  • python修改操作系統(tǒng)時間的方法

    python修改操作系統(tǒng)時間的方法

    這篇文章主要介紹了python修改操作系統(tǒng)時間的方法,涉及Python同步網絡時間與本機時間的相關技巧,需要的朋友可以參考下
    2015-05-05
  • matplotlib繪制折線圖的基本配置(萬能模板案例)

    matplotlib繪制折線圖的基本配置(萬能模板案例)

    折線圖可以很方便的看出數據的對比,本文主要介紹了matplotlib繪制折線圖的基本配置(萬能模板案例),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-04-04
  • Python實現partial改變方法默認參數

    Python實現partial改變方法默認參數

    這篇文章主要介紹了Python實現partial改變方法默認參數,需要的朋友可以參考下
    2014-08-08
  • 圖文詳解Python中最神秘的一個魔法函數

    圖文詳解Python中最神秘的一個魔法函數

    Python進階之路我覺得有兩個東西一定要了解,一個是魔法函數,下面這篇文章主要給大家介紹了關于Python中最神秘的一個魔法函數的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-12-12
  • python構建自定義回調函數詳解

    python構建自定義回調函數詳解

    在工作中,回調函數使用的場景是非常多的,下面我們就來通過例子程序來詳細了解利用了Python的屬性機制構建了一個自定義回調函數的使用
    2017-06-06

最新評論

万年县| 淮阳县| 河津市| 丰原市| 信宜市| 壤塘县| 左权县| 衡阳县| 阳东县| 万州区| 民勤县| 仙游县| 浙江省| 临沂市| 涟水县| 吴江市| 长治市| 香港| 蒙城县| 金乡县| 辰溪县| 肇庆市| 枣庄市| 阿拉善右旗| 昆明市| 三门峡市| 明水县| 右玉县| 嘉黎县| 个旧市| 杭州市| 祁连县| 延津县| 原平市| 遂宁市| 扎赉特旗| 贺兰县| 海阳市| 台江县| 湖南省| 富川|