【中秋徵文】使用Python中秋節嫦娥投食小遊戲《千里嬋娟》
'''
猿童學出品 --2022 年 9 月 1 日
環境如下:
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(" 玉兔吃月餅——猿童學祝大家中秋節快樂! ")
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 = 外匯跟單gendan5.comself.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()
# 猿童學
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2913782/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【中秋特輯】嫦娥妹妹,你彆著急~
- 傳統節日—中秋節
- 2019中秋節放假安排,2019中秋節是幾號 今年的中秋節是幾月幾日
- 第一個中秋節
- 使用Python完成一套優美的中秋節程式碼Python
- 2019年簡短的中秋節祝福語,簡單的中秋節祝福語
- 使用python繪製月餅,慢慢等待將至的中秋節Python
- 微信吸粉小遊戲怎麼製作?中秋節微信公眾號吸粉小遊戲製作教程遊戲
- 2019年中秋節祝福語 中秋微信祝福語大全
- Python版中秋佳節月餅搶購指令碼Python指令碼
- 中秋節微信公眾號吸粉活動,幾個關於中秋節微信活動的策劃方法
- 中秋不加班!這樣做可以提高遊戲開發效率遊戲開發
- 報!中秋福利到!
- 八月十五鬧中秋,嫦娥一對一直播交友原始碼視訊聊原始碼
- 北京市假日辦:2019年北京中秋節假日旅遊工作報告
- 又是一年中秋至|用Python Pygame製作兔子接月餅遊戲PythonGAM遊戲
- 中秋節微信公眾號活動營銷怎麼做?中秋節微信公眾號線上營銷活動製作教程
- 2019年中秋節假期文化和旅遊市場資料情況
- 10月6日 新基建專題 | 中秋國慶雙節盛典
- 中秋約碼 | 參加沸點 #程式碼秀# 活動來掘金拿中秋禮物
- 2019年中秋小長假出遊攻略 這些地方不能錯過!
- 機場做好這道題,才能萬戶千家共嬋娟
- 10月5日 大資料專題 | 中秋國慶雙節盛典大資料
- 中秋節營銷方案除了走心設計還能如何製作?
- 左手中秋右手試驗,玩遊戲玩出頂級論文,你敢玩嗎?遊戲
- 中秋味的視覺化大屏 【以python pyecharts為工具】視覺化PythonEcharts
- 2018中秋回老家度假.md
- 又是一年中秋
- 祝思否各位社群開發者中秋節和程式設計師日雙節快樂程式設計師
- 中秋節即將來臨,節日營銷h5怎麼設計吸引人?H5
- 高德叫車:中秋節免傭幫助司機增收七成 國慶節假期繼續48小時免傭
- 途家民宿:2019年中秋出遊預測
- 華瑞IT學校:迎中秋,猜燈謎
- Python小遊戲2048Python遊戲
- 歡聚小鎮鬧中秋《奶牛鎮的小時光》全平臺首發時間公佈
- 用程式碼過中秋,python海龜月餅你要不要嘗一口?Python
- 2020年1-8日中秋國慶全國接待國內遊客人次
- 文化和旅遊部:2019中秋國內旅遊收入472.8億元 同比增長8.7%