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中的len()函数的使用
Apr 07 Python
python抓取最新博客内容并生成Rss
May 17 Python
利用python实现简易版的贪吃蛇游戏(面向python小白)
Dec 30 Python
python学生管理系统开发
Jan 30 Python
Python的高阶函数用法实例分析
Apr 11 Python
在Django model中设置多个字段联合唯一约束的实例
Jul 17 Python
python pyenv多版本管理工具的使用
Dec 23 Python
Python requests.post方法中data与json参数区别详解
Apr 30 Python
Python使用Chrome插件实现爬虫过程图解
Jun 09 Python
Python如何自动获取目标网站最新通知
Jun 18 Python
python支持多继承吗
Jun 19 Python
Python3.9最新版下载与安装图文教程详解(Windows系统为例)
Nov 28 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 中执行排序与 MySQL 中排序
2009/04/21 PHP
php抽奖小程序的实现代码
2013/06/18 PHP
PHP面向对象程序设计之接口用法
2014/08/20 PHP
jQuery学习笔记(4)--Jquery中获取table中某列值的具体思路
2013/04/10 Javascript
Jquery选择子控件&quot;大于号&quot;和&quot; &quot;区别介绍及使用示例
2013/06/25 Javascript
简单的ajax连接库分享(不用jquery的ajax)
2014/01/19 Javascript
JavaScript charCodeAt方法入门实例(用于取得指定位置字符的Unicode编码)
2014/10/17 Javascript
Labelauty?jQuery单选框/复选框美化插件分享
2015/09/26 Javascript
基于jQuery Bar Indicator 插件实现进度条展示效果
2015/09/30 Javascript
详解JavaScript的回调函数
2015/11/20 Javascript
用原生JS对AJAX做简单封装的实例代码
2016/07/13 Javascript
关于javascript中限定时间内防止按钮重复点击的思路详解
2016/08/16 Javascript
JS给swf传参数的实现方法
2016/09/13 Javascript
vue.js实现条件渲染的实例代码
2017/06/22 Javascript
原生JS获取元素的位置与尺寸实现方法
2017/10/18 Javascript
不得不知的ES6小技巧
2018/07/28 Javascript
解决vue单页路由跳转后scrollTop的问题
2018/09/03 Javascript
Vue官方推荐AJAX组件axios.js使用方法详解与API
2018/10/09 Javascript
swiper4实现移动端导航栏tab滑动切换
2020/10/16 Javascript
[04:28]2014DOTA2国际邀请赛 采访小兔子LGD挺进钥匙体育馆
2014/07/14 DOTA
Python实现测试磁盘性能的方法
2015/03/12 Python
Python求算数平方根和约数的方法汇总
2016/03/09 Python
Python 闭包的使用方法
2017/09/07 Python
详解Python Matplot中文显示完美解决方案
2019/03/07 Python
python读取hdfs并返回dataframe教程
2020/06/05 Python
PyCharm Community安装与配置的详细教程
2020/11/24 Python
CSS3属性选择符介绍
2008/10/17 HTML / CSS
Mytheresa中国官网:德国时尚奢侈品商城
2017/08/04 全球购物
伊芙丽官方旗舰店:中国淑女一线品牌
2017/12/01 全球购物
网络工程师自荐书范文
2014/04/01 职场文书
医院信息公开实施方案
2014/05/09 职场文书
教师节寄语2015
2015/03/23 职场文书
企业年会祝酒词
2015/08/11 职场文书
社区干部培训心得体会
2016/01/06 职场文书
大学生社会服务心得体会
2016/01/22 职场文书
2016年百日安全生产活动总结
2016/04/06 职场文书