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

基于Python編寫一個中秋節(jié)嫦娥投食小游戲

 更新時間:2022年09月06日 08:46:09   作者:輕松學Python  
今天給大家?guī)淼氖墙o玉兔投喂月餅的小游戲。八月十五中秋夜晚,讓我們對著月亮許愿:希望我們在意和在意我們的人,諸邪避退、百事無忌、平安喜樂、萬事勝意。提前祝大家中秋節(jié)快樂

山河遠闊,煙火人間,又一年,千里嬋娟~

今天給大家?guī)淼氖墙o玉兔投喂月餅的小游戲。八月十五中秋夜晚,讓我們對著月亮許愿:希望我們在意和在意我們的人,諸邪避退、百事無忌、平安喜樂、萬事勝意。提前祝大家中秋節(jié)快樂。

中秋節(jié)的起源

中秋節(jié)起源于上古時代,普及于漢代,定型于唐朝初年,盛行于宋朝以后。中秋節(jié)是秋季時令習俗的綜合,其所包含的節(jié)俗因素,大都有古老的淵源。中秋節(jié)以月之圓兆人之團圓,為寄托思念故鄉(xiāng),思念親人之情,祈盼豐收、幸福,成為豐富多彩、彌足珍貴的文化遺產。

游戲設計

1、游戲背景

故事的開始,中秋佳節(jié)至,玉兔因為貪玩被趕下人間,抬頭望向天際,總是不自覺的會想起蘇軾的詞:“但愿人久,千里共嬋娟”。這是一年中,最溫柔又最有詩意的節(jié)日,可惜玉兔與嫦娥今年不能相聚,但嫦娥為了不讓玉兔餓肚子,在八月十五中秋節(jié)的晚上,嫦娥在月球為玉兔投食月餅……為了讓玉兔吃到更多,嫦娥開啟全民投食,只要給博主三連,就能給玉兔投食月餅啦!難道你忍心看到可愛的玉兔餓肚子嗎?

2、功能設計

人物:玉兔使用鼠標來控制左右運動

月餅:隨機從上界降落至下界,當碰到玉兔時,加10分,落到下界減5分。

月亮:隨機從上界降落至下界,當碰到玉兔時,減5分,且血條減一格。

血條:HP

值為3格時,生命為滿值,當碰到月亮時減1格。減為0格時,游戲結束。

開始:開始按鈕,鼠標點擊即開始游戲

重來:重來按鈕,鼠標點擊即重新開始

效果展示

兔兔是不是很可愛嘞!

代碼素材

環(huán)境如下

python 3.8.0

pygame 2.1.0

代碼

看看素材地址是否一致,不一致要改成素材本地的地址。

import pygame
import random
 
pygame.init()
sc = pygame.display.set_mode((600, 695))
pygame.display.set_caption("玉兔吃月餅——猿童學祝大家中秋節(jié)快樂!")
basket = pygame.image.load("pic/basket.png")
bj = pygame.image.load("pic/bj.jpg")
bomb = pygame.image.load("pic/bomb.png")
coin = pygame.image.load("pic/coin.png")
start = pygame.image.load("pic/start.jpg")
over = pygame.image.load("pic/over.jpg")
ihp = pygame.image.load("pic/hp.png")
btn_up = pygame.image.load("pic/btn_up.png")
btn_down = pygame.image.load("pic/btn_down.png")
bbtn_up = pygame.image.load("pic/bbtn_up.png")
bbtn_down = pygame.image.load("pic/bbtn_down.png")
word = "HP"
font = pygame.font.SysFont("", 32)
text = font.render(word, True, (75, 217, 65))
score = 0
text1 = font.render(str(score), True, (255, 255, 255))
bx = 0
lx, ly = [], []
fx, fy = [], []
speedy = 1
hp = 4
# 月餅生成的序列,通過序列可以源源不斷生成月餅
for i in range(0, 4):
    tx = random.randint(0, 586)
    ty = (i - 1) * 150
    lx.append(tx)
    ly.append(ty)
 
# 月亮生成的序列
for i in range(0, 2):
    x = random.randint(0, 586)
    y = (i - 1) * 300
    fx.append(x)
    fy.append(y)
 
 
# 按鈕類和按鈕點擊事件
class Button(object):
    def __init__(self, btn_up, btn_down, position):
        self.btn_up = btn_up
        self.btn_down = btn_down
        self.position = position
 
    def isOver(self):
        point_x, point_y = pygame.mouse.get_pos()
        x, y = self.position
        w, h = self.btn_down.get_size()
 
        in_x = x - w / 2 < point_x < x + w / 2
        in_y = y - h / 2 < point_y < y + h / 2
        return in_x and in_y
 
    def isPressed(self):
        if event.type == pygame.MOUSEBUTTONDOWN:
            point_x, point_y = pygame.mouse.get_pos()
            x, y = self.position
            w, h = self.btn_down.get_size()
            in_x = x - w / 2 < point_x < x + w / 2
            in_y = y - h / 2 < point_y < y + h / 2
            return True
 
    def render(self):
        w, h = self.btn_up.get_size()
        x, y = self.position
 
        if self.isOver():
            sc.blit(self.btn_down, (x - w / 2, y - h / 2))
        else:
            sc.blit(self.btn_up, (x - w / 2, y - h / 2))
 
 
button = Button(btn_up, btn_down, (288, 460))
 
bbutton = Button(bbtn_up, bbtn_down, (288, 460))
 
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            exit()
    # 游戲開始界面
    sc.blit(start, (0, 0))
    bbutton.render()
    if bbutton.isPressed():
        hp = 3
        score = 0
        text1 = font.render(str(score), True, (255, 255, 255))
    # 進入游戲
    if hp > 0 and hp < 4 and score >= 0:
        sc.blit(bj, (0, 0))
        sc.blit(text, (10, 583))
        sc.blit(text1, (570, 570))
        sc.blit(basket, (bx, 540))
        # 難度變化
        if score <= 50:
            speedy = 0.4
        if score > 100:
            speedy = 0.8
        if score > 150:
            speedy = 1.2
        if score > 200:
            speedy = 1.6
        for i in range(len(lx)):
            sc.blit(coin, (lx[i], ly[i] - 600))
            ly[i] += speedy
            if ly[i] > 610 + 600:
                ly[i] = 600
                lx[i] = random.randint(0, 540)
                score -= 5
                text1 = font.render(str(score), True, (255, 255, 255))
            # 玉兔的寬62 高 48
            # 碰撞判斷
            if lx[i] + 24 > bx and \
                    lx[i] + 24 < bx + 62 and \
                    ly[i] >= 1120 and \
                    ly[i] <= 1140:
                ly[i] = 600
                lx[i] = random.randint(0, 586)
                score += 10
                text1 = font.render(str(score), True, (255, 255, 255))
        for i in range(len(fx)):
            sc.blit(bomb, (fx[i], fy[i] - 600))
            fy[i] += speedy
            if fy[i] > 610 + 600:
                fy[i] = 600
                fx[i] = random.randint(0, 545)
 
            if fx[i] + 24 > bx and \
                    fx[i] + 24 < bx + 62 and \
                    fy[i] >= 1120 and \
                    fy[i] <= 1140:
                hp -= 1
                fy[i] = 600
                fx[i] = random.randint(0, 586)
 
        # 籃子跟隨鼠標運動
        if event.type == pygame.MOUSEMOTION:
            mx, my = pygame.mouse.get_pos()
            bx = mx - 24
        if bx < 0:
            bx = 0
        if bx > 610 - 62:
            bx = 548
        # 通過鍵盤控制籃子
        keys = pygame.key.get_pressed()
        if keys[pygame.K_a] or \
                keys[pygame.K_RIGHT]:
            bx += 5
        if keys[pygame.K_d] or \
                keys[pygame.K_LEFT]:
            bx += -5
        for i in range(0, hp):
            sc.blit(ihp, (22 * i + 40, 585))
 
    # 重新開始游戲
    if hp == 0 or score < 0:
        # 重新初始化游戲
        bx = 0
        speedy = 1
        # 月餅生成的序列
        for i in range(len(lx)):
            lx[i] = random.randint(0, 586)
            ly[i] = (i - 1) * 150
 
        # 月亮生成的序列
        for i in range(len(fx)):
            fx[i] = random.randint(0, 586)
            fy[i] = (i - 1) * 300
        sc.blit(over, (0, 0))
        button.render()
        # 點擊按鈕后重新開始游戲
        if button.isPressed():
            hp = 3
            score = 0
            text1 = font.render(str(score), True, (255, 255, 255))
    pygame.display.update()

素材

框框里的是圖片的名字,可以在網上找自己喜歡的素材替換,名字一致即可,下面有一些也提供了多個選擇。

素材放在pic文件夾中,有如下材料:

basket.png

bj.jpg

bomb.png

coin.png

start.jpg

over.jpg

這里不想找了,所以就一樣了,大家可以更換成自己喜歡的背景。

hp.png

btn_up.png

btn_down.png

bbtn_up.png

bbtn_down.png

到此這篇關于基于Python編寫一個中秋節(jié)嫦娥投食小游戲的文章就介紹到這了,更多相關Python嫦娥投食游戲內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Python中?*?號的用法總結

    Python中?*?號的用法總結

    Python中的?*號是一個特殊的符號,在其他編程語言中,它最廣為人知的用途就是作為乘法運算的符號,本文總結了Python中*號的所有用途,希望對大家有所幫助
    2023-11-11
  • python中將正則過濾的內容輸出寫入到文件中的實例

    python中將正則過濾的內容輸出寫入到文件中的實例

    今天小編就為大家分享一篇python中將正則過濾的內容輸出寫入到文件中的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • python3序列化與反序列化用法實例

    python3序列化與反序列化用法實例

    這篇文章主要介紹了python3序列化與反序列化用法,實例分析了Python3使用pickle模塊針對字符串進行序列化操作的相關技巧,需要的朋友可以參考下
    2015-05-05
  • Pygame實戰(zhàn)之實現(xiàn)經典外星人游戲

    Pygame實戰(zhàn)之實現(xiàn)經典外星人游戲

    這篇文章主要介紹了通過Pygame實現(xiàn)經典的外星人游戲的示例代碼,文中的代碼講解詳細,對我們了解Pygame有一定的幫助,感興趣的同學可以試一試
    2022-01-01
  • Python繪制牛奶凍曲線(高木曲線)案例

    Python繪制牛奶凍曲線(高木曲線)案例

    這篇文章主要介紹了Python繪制牛奶凍曲線(高木曲線)案例,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • pytorch Dropout過擬合的操作

    pytorch Dropout過擬合的操作

    這篇文章主要介紹了pytorch Dropout過擬合的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-05-05
  • 在交互式環(huán)境中執(zhí)行Python程序過程詳解

    在交互式環(huán)境中執(zhí)行Python程序過程詳解

    這篇文章主要介紹了在交互式環(huán)境中執(zhí)行Python程序過程詳解,運行Python腳本程序的方式有多種,目前主要的方式有:交互式環(huán)境運行、命令行窗口運行、開發(fā)工具上運行等,其中在不同的操作平臺上還互不相同,需要的朋友可以參考下
    2019-07-07
  • 詳解python的sorted函數(shù)對字典按key排序和按value排序

    詳解python的sorted函數(shù)對字典按key排序和按value排序

    這篇文章主要介紹了詳解python的sorted函數(shù)對字典按key排序和按value排序,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • 零基礎也能看懂的python內置csv模塊教程

    零基礎也能看懂的python內置csv模塊教程

    這篇博客就為你介紹一個知識點,python 內置模塊 csv 。讓大家一文就看懂csv csv(Comma-Separated Values)文件是什么?以及python 中的 csv 文件清晰解法讀取文件寫入文件 csv 文件其它說明
    2021-11-11
  • Python 字符串定義

    Python 字符串定義

    字符串是程序中最常見的數(shù)據類型。在Python中,可以使用三種方式定義字符串。單引號、雙引號和三引號。
    2009-09-09

最新評論

哈密市| 本溪| 乌拉特前旗| 肇源县| 巴马| 黑河市| 和硕县| 萨嘎县| 祥云县| 林州市| 盈江县| 常熟市| 泰宁县| 电白县| 洛隆县| 遂平县| 南城县| 义马市| 河曲县| 双流县| 金平| 宁乡县| 临泉县| 出国| 烟台市| 北海市| 金坛市| 罗山县| 元谋县| 湖北省| 江北区| 睢宁县| 阆中市| 罗城| 渝中区| 象山县| 昭苏县| 新巴尔虎右旗| 清新县| 库伦旗| 肃宁县|