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引用(import)文件夹下的py文件的方法
Aug 26 Python
python函数装饰器用法实例详解
Jun 04 Python
Python的爬虫框架scrapy用21行代码写一个爬虫
Apr 24 Python
pyQt5实时刷新界面的示例
Jun 25 Python
TensorFlow自定义损失函数来预测商品销售量
Feb 05 Python
pytorch中的inference使用实例
Feb 20 Python
Pytorch环境搭建与基本语法
Jun 03 Python
Python QT组件库qtwidgets的使用
Nov 02 Python
如何在Python中创建二叉树
Mar 30 Python
Python图像处理之图像拼接
Apr 28 Python
Python OpenCV 图像平移的实现示例
Jun 04 Python
教你使用一行Python代码玩遍童年的小游戏
Aug 23 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
PHPMailer安装方法及简单实例
2008/11/25 PHP
ThinkPHP登录功能的实现方法
2014/08/20 PHP
PHP多个文件上传到服务器实例
2014/10/29 PHP
验证token、回复图文\文本、推送消息的实用微信类php代码
2016/06/28 PHP
php性能分析之php-fpm慢执行日志slow log用法浅析
2016/10/17 PHP
IE autocomplete internet explorer's autocomplete
2007/06/30 Javascript
js控制div及网页相关属性的代码
2009/12/19 Javascript
动态的创建一个元素createElement及删除一个元素
2014/01/24 Javascript
Node.js开源应用框架HapiJS介绍
2015/01/14 Javascript
js基于cookie方式记住返回页面用法示例
2016/05/27 Javascript
JavaScript判断数组是否存在key的简单实例
2016/08/03 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
BootstrapValidator超详细教程(推荐)
2016/12/07 Javascript
AngularJS开发教程之控制器之间的通信方法分析
2016/12/25 Javascript
Javascript DOM事件操作小结(监听鼠标点击、释放,悬停、离开等)
2017/01/20 Javascript
微信小程序中实现一对多发消息详解及实例代码
2017/02/14 Javascript
原生JS实现九宫格抽奖效果
2017/04/01 Javascript
Vue.js组件高级特性实例详解
2018/12/24 Javascript
Angular中使用ng-zorro图标库部分图标不能正常显示问题
2019/04/22 Javascript
ElementUI Tag组件实现多标签生成的方法示例
2019/07/08 Javascript
微信小程序图片自适应实现解析
2020/01/21 Javascript
vue+axios全局添加请求头和参数操作
2020/07/24 Javascript
[50:15]VP vs Mineski 2018国际邀请赛淘汰赛BO3 第二场 8.22
2018/08/23 DOTA
使用BeautifulSoup爬虫程序获取百度搜索结果的标题和url示例
2014/01/19 Python
Python中列表(list)操作方法汇总
2014/08/18 Python
Python中几种导入模块的方式总结
2017/04/27 Python
Python实现 PS 图像调整中的亮度调整
2019/06/28 Python
一款纯css3实现的tab选项卡的实列教程
2014/12/11 HTML / CSS
甜点店创业计划书
2014/01/27 职场文书
个人政风行风自查自纠报告
2014/10/21 职场文书
教师节感谢信
2015/01/22 职场文书
新店开张宣传语
2015/07/13 职场文书
五星级酒店宣传口号
2015/12/25 职场文书
sql通过日期判断年龄函数的示例代码
2021/07/16 SQL Server
JavaScript的Set数据结构详解
2022/02/18 Javascript
JS实现页面炫酷的时钟特效示例
2022/08/14 Javascript