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

基于python pygame實(shí)現(xiàn)的兔子吃月餅小游戲

 更新時(shí)間:2021年09月14日 09:46:37   作者:tigeriaf  
pygame是用來(lái)開(kāi)發(fā)游戲的一套基于SDL的模板,它可以是python創(chuàng)建完全界面化的游戲和多媒體程序,而且它基本上可以在任何系統(tǒng)上運(yùn)行,這篇文章主要給大家介紹了基于python pygame實(shí)現(xiàn)的兔子吃月餅小游戲的相關(guān)資料,需要的朋友可以參考下

中秋佳節(jié)就快來(lái)臨,給各位大佬整個(gè)兔子吃月餅的小游戲助助興,廢話不多說(shuō),開(kāi)整。

小游戲規(guī)則簡(jiǎn)介

玩家通過(guò)"wsad"或者"↑↓←→"鍵控制兔子移動(dòng),使得兔子可以吃到更多的月餅,月餅一旦生成之后位置不會(huì)變,也不會(huì)消失,就等著兔子去吃,就是這么簡(jiǎn)單。但是吃了月餅會(huì)變重,重到一定程度會(huì)有想不到的效果。

實(shí)現(xiàn)

使用Python的pygame模塊開(kāi)發(fā),pygame是用來(lái)開(kāi)發(fā)游戲軟件的Python第三方庫(kù),基于SDL庫(kù)的基礎(chǔ)上開(kāi)發(fā)??梢詣?chuàng)建功能豐富的游戲和多媒體程序,用它來(lái)開(kāi)發(fā)小游戲非常適合。

初始化游戲窗口

import sys
import pygame

width = 800
height = 800
#  初始化所有pygame模塊
pygame.init()
# 創(chuàng)建游戲主窗口 width * height
windows = pygame.display.set_mode((width, height))
pygame.display.set_caption('兔子吃月餅!!')
# 游戲循環(huán)
while True:
    # 給屏幕填充顏色
    windows.fill((204, 204, 255))
    for event in pygame.event.get():
        # 判斷事件是否是退出事件,是則退出
        if event.type == pygame.QUIT:
            # 先退出pygame窗口,再退出程序
            pygame.quit()
            sys.exit()
    pygame.display.flip()

游戲邏輯

實(shí)現(xiàn)玩家類(lèi)

玩家應(yīng)該包括以下屬性:位置、角色大小、分?jǐn)?shù)等,還應(yīng)該有移動(dòng)位置move的方法,由于在此玩家控制的是一只兔子,玩法是吃月餅,所以把分?jǐn)?shù)換為重量。

class Rabbit:
    """
    玩家兔子類(lèi)
    """

    def __init__(self, top, left, height, width):
        # 初始位置及大小
        self.top = top
        self.left = left
        self.height = height
        self.width = width
        # 游戲人物的初始位置
        self.rect = pygame.Rect(self.left, self.top, self.width, self.height)

        self.player_image = pygame.image.load('兔子.png')
        self.player_stretched_image = pygame.transform.scale(self.player_image, (height, width))

        # 控制移動(dòng)變量
        self.move_left = False
        self.move_right = False
        self.move_up = False
        self.move_down = False
        # 每次移動(dòng)的大小
        self.MOVESPEED = 5
        # 重量
        self.weight = 5

    def move(self):
        """
        控制移動(dòng)
        :return:
        """
        if self.move_down and self.rect.bottom < height:
            self.rect.top += self.MOVESPEED
            self.rect.bottom += self.MOVESPEED
        if self.move_up and self.rect.top > 0:
            self.rect.top -= self.MOVESPEED
            self.rect.bottom -= self.MOVESPEED
        if self.move_left and self.rect.left > 0:
            self.rect.left -= self.MOVESPEED
            self.rect.right -= self.MOVESPEED
        if self.move_right and self.rect.right < width:
            self.rect.left += self.MOVESPEED
            self.rect.right += self.MOVESPEED

實(shí)現(xiàn)月餅類(lèi)

月餅包括月餅的位置大小,及月餅的圖像,月餅的圖像在已有的圖像中隨機(jī)選擇。

class MoonCake:
    """
    月餅類(lèi)
    """

    def __init__(self):
        # 位置及大小
        self.rect = pygame.Rect(random.randint(0, 750), random.randint(0, 750), 20, 20)
        # 圖像
        self.moon_cake_image = pygame.image.load("./月餅/月餅{}.png".format(random.randint(1, 8)))

交互邏輯

主要在游戲窗口內(nèi)生成并顯示玩家兔子和月餅,然后監(jiān)聽(tīng)鍵盤(pán)事件,監(jiān)聽(tīng)"wsad"或者"↑↓←→"鍵,來(lái)控制兔子上下左右的進(jìn)行移動(dòng),再實(shí)現(xiàn)碰撞檢測(cè)來(lái)驗(yàn)證兔子是否吃到月餅,吃到月餅則重量增加。運(yùn)行過(guò)程中也會(huì)不斷判斷月餅的數(shù)量,并不斷增加。

def game_run():
    global width
    global height
    # 是否結(jié)束
    end = False
    # 創(chuàng)建時(shí)鐘對(duì)象 (可以控制游戲循環(huán)頻率)
    clock = pygame.time.Clock()
    # 月餅計(jì)數(shù)器
    moon_cake_limit = 20

    player = None
    if not player:
        player = Rabbit(300, 100, 64, 64)
    moon_cakes = []
    for i in range(20):
        moon_cake = MoonCake()
        moon_cakes.append(moon_cake)

    # 游戲循環(huán)
    while True and not end:
        # 給屏幕填充顏色
        windows.fill((204, 204, 255))
        # 監(jiān)聽(tīng)鍵盤(pán)事件
        key_pressed = pygame.key.get_pressed()
        if key_pressed[pygame.K_a] or key_pressed[pygame.K_LEFT]:
            player.move_right = False
            player.move_left = True
        if key_pressed[pygame.K_d] or key_pressed[pygame.K_RIGHT]:
            player.move_left = False
            player.move_right = True
        if key_pressed[pygame.K_w] or key_pressed[pygame.K_UP]:
            player.move_down = False
            player.move_up = True
        if key_pressed[pygame.K_s] or key_pressed[pygame.K_DOWN]:
            player.move_up = False
            player.move_down = True
        player.move()
        for event in pygame.event.get():
            if event.type == QUIT:
                pygame.quit()
                sys.exit()
            if event.type == KEYUP:
                if event.key == K_ESCAPE:
                    pygame.quit()
                    sys.exit()
                if event.key == K_LEFT or event.key == K_a:
                    player.move_left = False
                if event.key == K_RIGHT or event.key == K_d:
                    player.move_right = False
                if event.key == K_UP or event.key == K_w:
                    player.move_up = False
                if event.key == K_DOWN or event.key == K_s:
                    player.move_down = False

        # 月餅不足20時(shí)生成新的月餅
        if len(moon_cakes) < moon_cake_limit:
            # 生成新的月餅
            moon_cakes.append(MoonCake())

        # 畫(huà)兔子
        windows.blit(player.player_stretched_image, player.rect)
        # 顯示兔子的重量
        text = pygame.font.SysFont("microsoftyaheimicrosoftyaheiui", 30)
        text_fmt = text.render("重量:{}斤!".format(player.weight), True, (255, 255, 255))
        windows.blit(text_fmt, (0, 0))
        # 畫(huà)月餅
        for moon_cake in moon_cakes:
            windows.blit(moon_cake.moon_cake_image, moon_cake.rect)
        # 碰撞檢測(cè)
        for moon_cake in moon_cakes:
            if player.rect.colliderect(moon_cake.rect):
                moon_cakes.remove(moon_cake)
                # 吃到月餅兔子會(huì)變重
                player.weight += 2

        pygame.display.flip()
        pygame.display.update()
        # 通過(guò)時(shí)鐘對(duì)象指定循環(huán)頻率
        clock.tick(40)

運(yùn)行如下:

突然發(fā)現(xiàn),這樣的話這個(gè)游戲永遠(yuǎn)不會(huì)結(jié)束,可以一直玩下去,上面我們說(shuō)了,兔子吃到月餅重量會(huì)增加,那我們?cè)黾右粋€(gè)機(jī)制:等兔子的重量大于100斤的時(shí)候,游戲結(jié)束,對(duì)!你沒(méi)有看錯(cuò)!,就是這么草率!??!

在碰撞檢測(cè)循環(huán)里加入以下邏輯:

if player.weight > 10:
    end = True
    while end:
        # 游戲結(jié)束
        windows.fill((204, 204, 255))
        text = pygame.font.SysFont("microsoftyaheimicrosoftyaheiui", 50)
        text_fmt1 = text.render("你的兔子撐死了!!".format(player.weight), True, (255, 255, 255))
        text_fmt2 = text.render("game over!".format(player.weight), True, (255, 255, 255))
        windows.blit(text_fmt1, (200, 200))
        windows.blit(text_fmt2, (260, 300))
        clock.tick(40)
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
                # 按任意鍵繼續(xù)
            if event.type == pygame.KEYDOWN:
                end = False
                # 重新生成玩家兔子及月餅
                player = Rabbit(random.randint(0, 750), random.randint(0, 750), 64, 64)
                moon_cakes.clear()
                for i in range(20):
                    moon_cake = MoonCake()
                    moon_cakes.append(moon_cake)

        pygame.display.flip()
        pygame.display.update()

為了方便調(diào)試,改成了兔子重量大于10斤,即結(jié)束。

運(yùn)行如下:

完成!感謝閱讀,提前祝大家中秋快樂(lè)?。?!

總結(jié)

到此這篇關(guān)于基于python pygame實(shí)現(xiàn)的兔子吃月餅小游戲的文章就介紹到這了,更多相關(guān)pygame兔子吃月餅小游戲內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python tiktoken的簡(jiǎn)介、安裝、使用方法

    python tiktoken的簡(jiǎn)介、安裝、使用方法

    tiktoken是OpenAI于近期開(kāi)源的Python第三方模塊,該模塊主要實(shí)現(xiàn)了tokenizer的BPE(Byte pair encoding)算法,并對(duì)運(yùn)行性能做了極大的優(yōu)化,本文將介紹python tiktoken的簡(jiǎn)介、安裝、使用方法,感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • python 多線程實(shí)現(xiàn)多任務(wù)的方法示例

    python 多線程實(shí)現(xiàn)多任務(wù)的方法示例

    本文主要介紹了python 多線程實(shí)現(xiàn)多任務(wù)的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • 基于Python編寫(xiě)一個(gè)微博抽獎(jiǎng)小程序

    基于Python編寫(xiě)一個(gè)微博抽獎(jiǎng)小程序

    本文將利用Python編寫(xiě)一個(gè)微博抽獎(jiǎng)小程序,夢(mèng)想總是要有的,萬(wàn)一靠在微博上自動(dòng)抽獎(jiǎng)暴富了呢~文中的示例代碼講解詳細(xì),感興趣的可以了解一下
    2022-05-05
  • python與c語(yǔ)言的語(yǔ)法有哪些不一樣的

    python與c語(yǔ)言的語(yǔ)法有哪些不一樣的

    在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于python與c語(yǔ)法區(qū)別的相關(guān)內(nèi)容,有興趣的朋友們可以參考下。
    2020-09-09
  • Python正則表達(dá)式分組概念與用法詳解

    Python正則表達(dá)式分組概念與用法詳解

    這篇文章主要介紹了Python正則表達(dá)式分組概念與用法,結(jié)合具體實(shí)例形式較為詳細(xì)的分析了Python正則表達(dá)式中分組、引用、斷言等概念與相關(guān)使用技巧,需要的朋友可以參考下
    2017-06-06
  • Python函數(shù)的周期性執(zhí)行實(shí)現(xiàn)方法

    Python函數(shù)的周期性執(zhí)行實(shí)現(xiàn)方法

    這篇文章主要介紹了Python函數(shù)的周期性執(zhí)行實(shí)現(xiàn)方法,涉及Python使用sched模塊實(shí)現(xiàn)函數(shù)周期性調(diào)度觸發(fā)的相關(guān)技巧,需要的朋友可以參考下
    2016-08-08
  • Python使用scrapy抓取網(wǎng)站sitemap信息的方法

    Python使用scrapy抓取網(wǎng)站sitemap信息的方法

    這篇文章主要介紹了Python使用scrapy抓取網(wǎng)站sitemap信息的方法,涉及Python框架scrapy的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-04-04
  • Python裝飾器入門(mén)學(xué)習(xí)教程(九步學(xué)習(xí))

    Python裝飾器入門(mén)學(xué)習(xí)教程(九步學(xué)習(xí))

    裝飾器(decorator)是一種高級(jí)Python語(yǔ)法。裝飾器可以對(duì)一個(gè)函數(shù)、方法或者類(lèi)進(jìn)行加工。本文給大家介紹Python裝飾器入門(mén)學(xué)習(xí)教程(九步學(xué)習(xí)),對(duì)python裝飾器相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧
    2016-01-01
  • Python sklearn庫(kù)實(shí)現(xiàn)PCA教程(以鳶尾花分類(lèi)為例)

    Python sklearn庫(kù)實(shí)現(xiàn)PCA教程(以鳶尾花分類(lèi)為例)

    今天小編就為大家分享一篇Python sklearn庫(kù)實(shí)現(xiàn)PCA教程(以鳶尾花分類(lèi)為例),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • python 如何比較字符串是否一樣

    python 如何比較字符串是否一樣

    這篇文章主要介紹了python 如何比較字符串是否一樣的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評(píng)論

南乐县| 海丰县| 闵行区| 华池县| 庐江县| 阳山县| 宜春市| 汉源县| 临高县| 景洪市| 新竹市| 图木舒克市| 喀什市| 玉屏| 遵义县| 娱乐| 淳安县| 湘阴县| 仁寿县| 海城市| 温泉县| 平邑县| 胶州市| 岱山县| 清徐县| 尚义县| 龙胜| 日土县| 定日县| 苏州市| 大同市| 宜黄县| 卢龙县| 福建省| 呼图壁县| 南皮县| 尖扎县| 望城县| 白城市| 黄山市| 永寿县|