这篇文章主要为大家详细介绍了python pygame实现挡板弹球游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
学了一天pygame,用python和pygame写一个简单的挡板弹球游戏
GitHub:
EasyBaffleBallGame
# -*- coding:utf-8 -*- from sys import exit import pygame from pygame.locals import * pygame.init() # 创建窗口 ScreenWidth = 500 ScreenHright = 720 ScreenSize = (ScreenWidth, ScreenHright) Screen = pygame.display.set_mode(ScreenSize, 0, 32) pygame.display.set_caption("Ly's Easy Ball Game") # 背景音乐 pygame.mixer.music.load('Sugar.mp3') pygame.mixer.music.play(-1, 0.0) # 碰撞音效 CollisionMusic = pygame.mixer.Sound('collision.wav') # 重新开始按钮音效 ButtonMusic = pygame.mixer.Sound('button.wav') # 游戏结束音效 GameOverMusic = pygame.mixer.Sound('over.wav') def GameStart(): # 游戏背景Surface对象 Background = pygame.image.load('GameBackground.jpg-600').convert() # 挡板Surface对象 Baffle = pygame.image.load('Baffle.png-600').convert_alpha() # 球Surface对象 Ball = pygame.image.load('Ball.png-600').convert_alpha() # 挡板位置信息 BaffleX = 140 BaffleY = 600 BaffleSpeed = 1000 BaffleXSpeed = BaffleSpeed BaffleYSpeed = BaffleSpeed BaffleMove = {K_LEFT: 0, K_RIGHT: 0, K_UP: 0, K_DOWN: 0} # 球位置信息 BallX = 235 BallY = 0 BallSpeed = 1000. BallXSpeed = BallSpeed BallYSpeed = BallSpeed # 帧率控制Clock对象 FPSClock = pygame.time.Clock() # 时间显示Clock对象 ProgramRunClock = pygame.time.get_ticks() # 时间显示Font对象 RunTimeFont = pygame.font.Font('Jura-DemiBold.ttf', 24) # 游戏结果 GameResult = '' while True: # 接收信息处理 for event in pygame.event.get(): if event.type == QUIT: exit() if event.type == KEYDOWN: if event.key in BaffleMove: BaffleMove[event.key] = 1 elif event.type == KEYUP: if event.key in BaffleMove: BaffleMove[event.key] = 0 # 绘制背景 Screen.blit(Background, (0, 0)) RunTimeStr = str((pygame.time.get_ticks() - ProgramRunClock) / 1000.0) # print(RunTimeStr) # 使用render方法显示时间字体 RunTimeSurface = RunTimeFont.render(RunTimeStr, True, (255, 52, 179)) # 显示时间 Screen.blit(RunTimeSurface, (0, 0)) # 距上次调用clock对象时间 SecondTimePassed = FPSClock.tick(60) / 1000.0 # 绘制球 Screen.blit(Ball, (BallX, BallY)) BallX += BallXSpeed * SecondTimePassed BallY += BallYSpeed * SecondTimePassed # 判断球边界条件 if BallX > 500 - Ball.get_width(): BallXSpeed = -BallXSpeed BallX = 500 - Ball.get_width() elif BallX 720 - Ball.get_width(): BallYSpeed = -BallYSpeed BallY = 720 - Ball.get_width() elif BallY 500 - Baffle.get_width(): BaffleX = 500 - Baffle.get_width() elif BaffleX 720 - 45 - Baffle.get_height(): BaffleY = 720 - 45 - Baffle.get_height() elif BaffleY BaffleX and BallX BaffleY - Ball.get_height() and BallY BaffleX and BallX <bafflex + baffle.get_width() and bally BaffleY: BallYSpeed = -BallYSpeed BallY = BaffleY + Baffle.get_height() CollisionMusic.play() # 挡板左侧面 elif BallY > BaffleY and BallY BaffleX - Ball.get_width() and BallX BaffleY and BallY BaffleX + Baffle.get_width() - Ball.get_width() and BallX 720 - 45: GameResult = RunTimeStr GameOverMusic.play() return GameResult # 刷新显示 pygame.display.update() def GameResult(GameResult): # 游戏结果背景Surface对象 GameResultBackground = pygame.image.load('GameResultBackground.png-600').convert() # 游戏结果引导 ResultHint = pygame.image.load('ResultFont.png-600').convert_alpha() # 游戏结果Font对象 GameResultFont = pygame.font.Font('EuroBold.ttf', 100) # 重新开始按钮 ReStartButton = pygame.image.load('ReStartButton.png-600').convert_alpha() # 重新开始Hover按钮 ReStartButtonHover = pygame.image.load('ReStartButtonHover.png-600').convert_alpha() while True: for event in pygame.event.get(): if event.type == QUIT: exit() if event.type == pygame.MOUSEBUTTONDOWN and 150 <= event.pos[ 0] <= 150 + ReStartButton.get_width() and 450 <= event.pos[1] <= 450 + ReStartButton.get_height(): ButtonMusic.play() return True # 游戏结果背景 Screen.blit(GameResultBackground, (0, 0)) # 游戏结果引导 Screen.blit(ResultHint, (45, 200)) RunTimeSurface = GameResultFont.render(GameResult, True, (255, 69, 0)) Screen.blit(RunTimeSurface, (90, 270)) # 重新开始游戏按钮 MouseX, MouseY = pygame.mouse.get_pos() if 150 <= MouseX <= 150 + ReStartButton.get_width() and 450 <= MouseY <= 450 + ReStartButton.get_height(): Screen.blit(ReStartButtonHover, (150, 450)) else: Screen.blit(ReStartButton, (150, 450)) # 游戏结果 pygame.display.up<div style="color:transparent">来源gaodai.ma#com搞##代!^码网</div>date() if __name__ == '__main__': flag = True while flag: GameResultStr = GameStart() if GameResultStr != '': flag = GameResult(GameResultStr)
运行结果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持gaodaima搞代码网。
以上就是python pygame实现挡板弹球游戏的详细内容,更多请关注gaodaima搞代码网其它相关文章!