五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動態(tài)

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

發(fā)布日期:2022-01-04 05:10 | 文章來源:腳本之家

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

小游戲規(guī)則簡介

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

實現(xiàn)

使用Python的pygame模塊開發(fā),pygame是用來開發(fā)游戲軟件的Python第三方庫,基于SDL庫的基礎上開發(fā)。可以創(chuàng)建功能豐富的游戲和多媒體程序,用它來開發(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()

游戲邏輯

實現(xiàn)玩家類

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

class Rabbit:
 """
 玩家兔子類
 """
 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))
  # 控制移動變量
  self.move_left = False
  self.move_right = False
  self.move_up = False
  self.move_down = False
  # 每次移動的大小
  self.MOVESPEED = 5
  # 重量
  self.weight = 5
 def move(self):
  """
  控制移動
  :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

實現(xiàn)月餅類

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

class MoonCake:
 """
 月餅類
 """
 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)聽鍵盤事件,監(jiān)聽"wsad"或者"↑↓←→"鍵,來控制兔子上下左右的進行移動,再實現(xiàn)碰撞檢測來驗證兔子是否吃到月餅,吃到月餅則重量增加。運行過程中也會不斷判斷月餅的數(shù)量,并不斷增加。

def game_run():
 global width
 global height
 # 是否結(jié)束
 end = False
 # 創(chuàng)建時鐘對象 (可以控制游戲循環(huán)頻率)
 clock = pygame.time.Clock()
 # 月餅計數(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)聽鍵盤事件
  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時生成新的月餅
  if len(moon_cakes) < moon_cake_limit:
# 生成新的月餅
moon_cakes.append(MoonCake())
  # 畫兔子
  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))
  # 畫月餅
  for moon_cake in moon_cakes:
windows.blit(moon_cake.moon_cake_image, moon_cake.rect)
  # 碰撞檢測
  for moon_cake in moon_cakes:
if player.rect.colliderect(moon_cake.rect):
 moon_cakes.remove(moon_cake)
 # 吃到月餅兔子會變重
 player.weight += 2
  pygame.display.flip()
  pygame.display.update()
  # 通過時鐘對象指定循環(huán)頻率
  clock.tick(40)

運行如下:

突然發(fā)現(xiàn),這樣的話這個游戲永遠不會結(jié)束,可以一直玩下去,上面我們說了,兔子吃到月餅重量會增加,那我們增加一個機制:等兔子的重量大于100斤的時候,游戲結(jié)束,對!你沒有看錯!,就是這么草率?。?!

在碰撞檢測循環(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é)束。

運行如下:

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

總結(jié)

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

版權(quán)聲明:本站文章來源標注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

相關文章

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務

7x24全年不間斷在線

專屬顧問服務

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務熱線

關注
微信

關注官方微信
頂部