python弹球游戏移动球拍_python pygame实现挡板弹球游戏的代码
# -*- 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').convert()
# 挡板Surface对象
Baffle = pygame.image.load('Baffle.png').convert_alpha()
# 球Surface对象
Ball = pygame.image.load('Ball.png').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 < 0:
BallXSpeed = -BallXSpeed
BallX = 0
if BallY > 720 - Ball.get_width():
BallYSpeed = -BallYSpeed
BallY = 720 - Ball.get_width()
elif BallY < 0:
BallYSpeed = -BallYSpeed
BallY = 0
# 定位挡板移动后坐标
BaffleX -= BaffleMove[K_LEFT] * BaffleXSpeed * SecondTimePassed
BaffleX += BaffleMove[K_RIGHT] * BaffleXSpeed * SecondTimePassed
BaffleY -= BaffleMove[K_UP] * BaffleYSpeed * SecondTimePassed
BaffleY += BaffleMove[K_DOWN] * BaffleYSpeed * SecondTimePassed
# 判断挡板边界条件
if BaffleX > 500 - Baffle.get_width():
BaffleX = 500 - Baffle.get_width()
elif BaffleX < 0:
BaffleX = 0
if BaffleY > 720 - 45 - Baffle.get_height():
BaffleY = 720 - 45 - Baffle.get_height()
elif BaffleY < 720 - Baffle.get_height() * 3:
BaffleY = 720 - Baffle.get_height() * 3
# 绘制挡板
Screen.blit(Baffle, (BaffleX, BaffleY))
# 判断球碰撞挡板条件
# 挡板左上角
if BallX == BaffleX - Ball.get_width() and BallY == BaffleY - Ball.get_height():
BallXSpeed = -BallXSpeed
BallYSpeed = -BallYSpeed
CollisionMusic.play()
# 挡板左下角
elif BallX == BaffleX - Ball.get_width() and BallY == BaffleY + Baffle.get_height():
BallXSpeed = -BallXSpeed
BallYSpeed = -BallYSpeed
CollisionMusic.play()
# 挡板右上角
elif BallX == BaffleX + Baffle.get_width() and BallY == BaffleY - Ball.get_height():
BallXSpeed = -BallXSpeed
BallYSpeed = -BallYSpeed
CollisionMusic.play()
# 挡板右下角
elif BallX == BaffleX + Baffle.get_width() and BallY == BaffleY + Baffle.get_height():
BallXSpeed = -BallXSpeed
BallYSpeed = -BallYSpeed
CollisionMusic.play()
# 挡板上表面
elif BallX > BaffleX and BallX < BaffleX + Baffle.get_width() and BallY > BaffleY - Ball.get_height() and BallY < BaffleY:
BallYSpeed = -BallYSpeed
BallY = BaffleY - Ball.get_height()
CollisionMusic.play()
# 挡板下表面
elif BallX > BaffleX and BallX < BaffleX + Baffle.get_width() and BallY < BaffleY + Baffle.get_height() and BallY > BaffleY:
BallYSpeed = -BallYSpeed
BallY = BaffleY + Baffle.get_height()
CollisionMusic.play()
# 挡板左侧面
elif BallY > BaffleY and BallY < BaffleY + Baffle.get_height() and BallX > BaffleX - Ball.get_width() and BallX < BaffleX:
BallXSpeed = -BallXSpeed
BallX = BaffleX
CollisionMusic.play()
# 挡板右侧面
elif BallY > BaffleY and BallY < BaffleY + Baffle.get_height() and BallX > BaffleX + Baffle.get_width() - Ball.get_width() and BallX < BaffleX + Baffle.get_width():
BallXSpeed = -BallXSpeed
BallX = BaffleX + Baffle.get_width()
CollisionMusic.play()
if BallY > 720 - 45:
GameResult = RunTimeStr
GameOverMusic.play()
return GameResult
# 刷新显示
pygame.display.update()
def GameResult(GameResult):
# 游戏结果背景Surface对象
GameResultBackground = pygame.image.load('GameResultBackground.png').convert()
# 游戏结果引导
ResultHint = pygame.image.load('ResultFont.png').convert_alpha()
# 游戏结果Font对象
GameResultFont = pygame.font.Font('EuroBold.ttf', 100)
# 重新开始按钮
ReStartButton = pygame.image.load('ReStartButton.png').convert_alpha()
# 重新开始Hover按钮
ReStartButtonHover = pygame.image.load('ReStartButtonHover.png').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.update()
if __name__ == '__main__':
flag = True
while flag:
GameResultStr = GameStart()
if GameResultStr != '':
flag = GameResult(GameResultStr)
python弹球游戏移动球拍_python pygame实现挡板弹球游戏的代码相关推荐
- python中的pygame弹球游戏代码_python pygame实现挡板弹球游戏
学了一天pygame,用python和pygame写一个简单的挡板弹球游戏 GitHub: # -*- coding:utf-8 -*- from sys import exit import pyg ...
- python编写一个弹球游戏_python pygame实现挡板弹球游戏
学了一天pygame,用python和pygame写一个简单的挡板弹球游戏 GitHub: # -*- coding:utf-8 -*- from sys import exit import pyg ...
- python中的pygame弹球游戏代码_使用python和pygame制作挡板弹球游戏
python是个很有趣的语言,可以在cmd命令窗口运行,还有很多的功能强大的模块. 学了一天pygame,用python和pygame写一个简单的挡板弹球游戏. 2018年6月21日 00:15:21 ...
- python贪吃蛇设计目标_基于 pygame 设计贪吃蛇游戏
基于 pygame 设计贪吃蛇游戏 贪吃蛇游戏通过玩家控制蛇移动,不断吃到食物增长,直到碰到蛇身或边界游戏结束.其运行效果如下所示: 游戏开始时,先导入可能需要用到的包. import time im ...
- python如何使板子移动_python实现移动木板小游戏
本文实例为大家分享了python实现移动木板小游戏的具体代码,供大家参考,具体内容如下 一.游戏简介 本游戏是通过python编写的小游戏,给初学者熟悉python编程语言抛砖引玉,希望有所帮助. 成 ...
- python弹球游戏移动球拍_python编写弹球游戏的实现代码
弹球游戏: from tkinter import * import time import random tk=Tk() #创建一个界面 tk.title("弹球游戏") can ...
- python飞机大战功能模块图_python pygame实现飞机大战游戏
1.引言 1.1 项目背景 python是一种跨平台的计算机程序设计语言.是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言.最初被设计用于编写自动化脚本(Shell),随着版本的不断更新 ...
- python游戏背景音乐循环_Python:pygame游戏编程之旅六(游戏中的声音处理)
一款人性化的游戏中缺少不了声音,比如角色挂时惨叫一声,或PK时武器交锋的声音,还有就是英雄出场时的背景音乐,无不涉及到声音,本节我们就来看一下pygame中如何控制声音,下面是一个例子,但博客上传不了 ...
- python游戏贪吃蛇_Python写的贪吃蛇游戏例子_python
这篇文章主要介绍了Python写的贪吃蛇游戏例子,练手作品,又好玩又可以学到东西,需要的朋友可以参考下 第一次用Python写这种比较实用且好玩的东西,权当练手吧 游戏说明: * P键控制" ...
- python写的飞船游戏卡顿,Python3+Pygame实现的射击游戏,很流畅,有音效
之前看到过很多人写的飞机大战,当然了之前我也写过多个版本,总体来说功能是实现了,但总感觉不够"炫" 今天浏览Python资料的时候,意外发现了这个很好的"射击" ...
最新文章
- python nltk book_NLTK学习笔记(一):语言处理和Python
- 《互联网运营智慧》之自序(新)
- 在linux安装mysql重启提示You must SET PASSWORD before executing this statement的解决方法
- Eclipse设置背景色、字体大小
- 在Windows操作系统下,由操作系统分配的内存就叫做堆
- 教你从头写游戏服务器框架
- 样条 开源_成年人在开源社区中是什么样的?
- 语义分割之原图与mask的可视化
- 在线图片压缩png 和 gif,docsmall.com
- VBA新手教程:抽卡模拟实战(3)
- 软件测试整改报告,软件测试工作效率低的改进措施
- eclipse画UML图
- js继承的几种实现方式
- matlab数据类型single vs double
- 用matlab开环增益,自控原理实验仿真部份
- WTS_ERAL_年假生成规则
- pca人脸特征降维的过程理解及matlab编程实现
- 牛客练习赛63 B	牛牛的鱼缸
- 图像处理(一):傅里叶变换简单讲解
- Paper reading (六十五):Kernel-penalized regression for analysis of microbiome data