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使用xmlrpc实例讲解
Dec 17 Python
Python中datetime常用时间处理方法
Jun 15 Python
Python的Flask框架的简介和安装方法
Nov 13 Python
Python 列表排序方法reverse、sort、sorted详解
Jan 22 Python
分享python数据统计的一些小技巧
Jul 21 Python
基于asyncio 异步协程框架实现收集B站直播弹幕
Sep 11 Python
用Python实现KNN分类算法
Dec 22 Python
Python机器学习库scikit-learn安装与基本使用教程
Jun 25 Python
在Pycharm中使用GitHub的方法步骤
Jun 13 Python
python使用PIL和matplotlib获取图片像素点并合并解析
Sep 10 Python
使用Python给头像戴上圣诞帽的图像操作过程解析
Sep 20 Python
django model object序列化实例
Mar 13 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
PHP代码审核的详细介绍
2013/06/13 PHP
PHP对称加密函数实现数据的加密解密
2016/10/27 PHP
PHP设计模式(九)外观模式Facade实例详解【结构型】
2020/05/02 PHP
Array.prototype 的泛型应用分析
2010/04/30 Javascript
js获取键盘按键响应事件(兼容各浏览器)
2013/05/16 Javascript
jquery ajax实现下拉框三级无刷新联动,且保存保持选中值状态
2013/10/29 Javascript
Js可拖拽放大的层拖动特效实现方法
2015/02/25 Javascript
浅谈jquery的map()和each()方法
2016/06/12 Javascript
Javascript 动态改变imput type属性
2016/11/01 Javascript
AngularJS递归指令实现Tree View效果示例
2016/11/07 Javascript
Bootstarp 基础教程之表单部分实例代码
2017/02/03 Javascript
浅谈Javascript事件对象
2017/02/05 Javascript
js实现一键复制功能
2017/03/16 Javascript
Vue隐藏显示、只读实例代码
2018/07/18 Javascript
JS+HTML5 Canvas实现简单的写字板功能示例
2018/08/30 Javascript
浅谈微信小程序flex布局基础
2018/09/10 Javascript
[46:37]LGD vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python自动化运维之IP地址处理模块详解
2017/12/10 Python
Python面向对象class类属性及子类用法分析
2018/02/02 Python
Python3正则匹配re.split,re.finditer及re.findall函数用法详解
2018/06/11 Python
Python TestCase中的断言方法介绍
2019/05/02 Python
Python简单处理坐标排序问题示例
2019/07/11 Python
SELENIUM自动化模拟键盘快捷键操作实现解析
2019/10/28 Python
openCV提取图像中的矩形区域
2020/07/21 Python
基于opencv的selenium滑动验证码的实现
2020/07/24 Python
特罗佩亚包官方网站:Tropea
2017/01/03 全球购物
英国最出名高街品牌:Forever Unique
2018/02/24 全球购物
大学四年个人的自我评价
2014/02/26 职场文书
人力资源管理专业自荐书
2014/07/07 职场文书
2015年纪检监察工作总结
2015/04/08 职场文书
2015年新教师工作总结
2015/04/28 职场文书
行政申诉状范文
2015/05/20 职场文书
拯救大兵瑞恩观后感
2015/06/09 职场文书
靠谱的活动总结
2019/04/16 职场文书
Python中npy和mat文件的保存与读取
2022/04/24 Python
如何使用注解方式实现 Redis 分布式锁
2022/07/23 Redis