python使用pygame实现笑脸乒乓球弹珠球游戏


Posted in Python onNovember 25, 2019

今天我们用python和pygame实现一个乒乓球的小游戏,或者叫弹珠球游戏。

笑脸乒乓球游戏功能介绍

乒乓球游戏功能如下:

乒乓球从屏幕上方落下,用鼠标来移动球拍,使其反弹回去,并获得得分,如果没有接到该球,则失去一条命。玩家有一定数量的命如5。

游戏设计思路

根据游戏规则,我们需要

1、初始化游戏环境
2、画出乒乓球,球拍等
3、设置乒乓球的运动,并监听鼠标,以移动球拍
4、判断乒乓球被接住与否
5、游戏是否结束,是否再玩。

代码实现

import pygame
pygame.init()
screen_width=800
screen_height=600
screen=pygame.display.set_mode([screen_width,screen_height])
pygame.display.set_caption("笑脸乒乓球")
keepGoing=True
pic=pygame.image.load("CrazySmile.bmp")
colorkey = pic.get_at((0,0))
pic.set_colorkey(colorkey)
picx=0
picy=0
BLACK=(0,0,0)
WHITE=(255,255,255)
timer=pygame.time.Clock()
paddle_width=200
paddle_height=25
paddle_x=300
paddle_y=550

speedx=5
speedy=5
#图片的高度和宽度
pic_width=pic.get_width()
pic_height=pic.get_height()
#分数和命
points=0
lives=5
font=pygame.font.SysFont("Times",24)
pop = pygame.mixer.Sound("pop.wav")

while keepGoing:
 for event in pygame.event.get():
 if event.type==pygame.QUIT:
  keepGoing=False
 if event.type == pygame.KEYDOWN:
  if event.key == pygame.K_F1: # F1 = New Game
  points = 0
  lives = 5
  picx = 0
  picy = 0
  speedx = 5
  speedy = 5

 pop.play()
 picx += speedx
 picy += speedy
 if picx <= 0 or picx >= 700:
 speedx = -speedx * 1.1
 if picy <= 0:
 speedy = -speedy + 1
 if picy >= 500:
 lives -= 1
 speedy = -5
 speedx = 5
 picy = 499
 # if picx <= 0 or picx + pic_width > screen_width:
 # speedx = -speedx
 # if picy <= 0:
 # speedy = -speedy
 # if picy >= 500:
 # lives -= 1
 # speedy = -speedy
 screen.fill(BLACK)
 screen.blit(pic, (picx, picy))
 # 画出球拍
 paddle_x = pygame.mouse.get_pos()[0]
 paddle_x -= paddle_width / 2
 pygame.draw.rect(screen, WHITE, (paddle_x, paddle_y, paddle_width, paddle_height))
 #判断接住乒乓球
 if picy + pic_width > paddle_y and picy + pic_height < paddle_y + paddle_height and speedy > 0:
 if picx + pic_width / 2 > paddle_x and picx + pic_width / 2 < paddle_x + paddle_width:
  points += 1
  speedy = -speedy
 # 在屏幕上画出得分

 draw_string = "Lives: " + str(lives) + " Points: " + str(points)
 if lives<1:
 draw_string="Game Over. Your scores is "+str(points)
 draw_string+="press F1 to play again"
 text = font.render(draw_string, True, WHITE)
 text_rect = text.get_rect()
 text_rect.centerx = screen.get_rect().centerx
 text_rect.y = 10
 screen.blit(text, text_rect)
 pygame.display.update()
 timer.tick(60)

pygame.quit()

代码中用的乒乓球是如下图片。

python使用pygame实现笑脸乒乓球弹珠球游戏

总结

1、通过上述代码,功能基本实现
2、可以有很多改进,如通过键盘来操控球拍,如给游戏加上背景音乐,其中加音乐的方法是

pop = pygame.mixer.Sound("pop.wav")
pop.play()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python过滤函数filter()使用自定义函数过滤序列实例
Aug 26 Python
python+selenium实现登录账户后自动点击的示例
Dec 22 Python
Django中间件工作流程及写法实例代码
Feb 06 Python
Python 字符串与二进制串的相互转换示例
Jul 23 Python
解决Python一行输出不显示的问题
Dec 03 Python
解决Python 命令行执行脚本时,提示导入的包找不到的问题
Jan 19 Python
详解Python3网络爬虫(二):利用urllib.urlopen向有道翻译发送数据获得翻译结果
May 07 Python
numpy.random模块用法总结
May 27 Python
Python 文件操作之读取文件(read),文件指针与写入文件(write),文件打开方式示例
Sep 29 Python
2020最新pycharm汉化安装(python工程狮亲测有效)
Apr 26 Python
使用PyCharm官方中文语言包汉化PyCharm
Nov 18 Python
编写python程序的90条建议
Apr 14 Python
Django项目基础配置和基本使用过程解析
Nov 25 #Python
nginx+uwsgi+django环境搭建的方法步骤
Nov 25 #Python
python找出列表中大于某个阈值的数据段示例
Nov 24 #Python
python对Excel按条件进行内容补充(推荐)
Nov 24 #Python
使用Python的datetime库处理时间(RPA流程)
Nov 24 #Python
Python 中判断列表是否为空的方法
Nov 24 #Python
python3中利用filter函数输出小于某个数的所有回文数实例
Nov 24 #Python
You might like
第五节 克隆 [5]
2006/10/09 PHP
PHP+AJAX实现无刷新注册(带用户名实时检测)
2006/12/02 PHP
php将mysql数据库整库导出生成sql文件的具体实现
2014/01/08 PHP
Codeigniter实现多文件上传并创建多个缩略图
2014/06/12 PHP
form表单传递数组数据、php脚本接收的实例
2017/02/09 PHP
解决Laravel blade模板转义html标签的问题
2019/09/03 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
2019/12/18 PHP
静态页面下用javascript操作ACCESS数据库(读增改删)的代码
2007/05/14 Javascript
javascript通过class来获取元素实现代码
2013/02/20 Javascript
使用jquery自定义鼠标样式满足个性需求
2013/11/05 Javascript
javascript父、子页面交互技巧总结
2014/08/08 Javascript
Node.js中安全调用系统命令的方法(避免注入安全漏洞)
2014/12/05 Javascript
JavaScript组件开发之输入框加候选框
2017/03/10 Javascript
jQuery使用ajax_动力节点Java学院整理
2017/07/05 jQuery
vue loadmore组件上拉加载更多功能示例代码
2017/07/19 Javascript
js仿微信抢红包功能
2020/09/25 Javascript
基于webpack4搭建的react项目框架的方法
2018/06/30 Javascript
用原生JS实现爱奇艺首页导航栏代码实例
2019/09/19 Javascript
在博客园博文中添加自定义右键菜单的方法详解
2020/02/05 Javascript
JSON获取属性值方法代码实例
2020/06/30 Javascript
[36:22]VP vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python基础语言学习笔记总结(精华)
2017/11/14 Python
python用fsolve、leastsq对非线性方程组求解
2018/12/15 Python
Python基于datetime或time模块分别获取当前时间戳的方法实例
2019/02/19 Python
Python判断有效的数独算法示例
2019/02/23 Python
python面向对象 反射原理解析
2019/08/12 Python
python使用Geany编辑器配置方法
2020/02/21 Python
解决python运行启动报错问题
2020/06/01 Python
利用Python实现Excel的文件间的数据匹配功能
2020/06/16 Python
商场拾金不昧表扬信
2014/01/13 职场文书
能源工程专业应届生求职信
2014/03/01 职场文书
高中班级口号
2014/06/09 职场文书
手术室护士节演讲稿
2014/08/27 职场文书
2014年设计师工作总结
2014/11/25 职场文书
观看禁毒宣传片后的感想
2015/08/11 职场文书
Python如何快速找到多个字典中的公共键(key)
2022/04/29 Python