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基于queue和threading实现多线程下载实例
Oct 08 Python
Python 正则表达式(转义问题)
Dec 15 Python
Python处理命令行参数模块optpars用法实例分析
May 31 Python
python实现维吉尼亚加密法
Mar 20 Python
对python中GUI,Label和Button的实例详解
Jun 27 Python
Django的models中on_delete参数详解
Jul 16 Python
python实现两张图片拼接为一张图片并保存
Jul 16 Python
keras实现图像预处理并生成一个generator的案例
Jun 17 Python
Python爬虫设置ip代理过程解析
Jul 20 Python
python获取时间戳的实现示例(10位和13位)
Sep 23 Python
PyCharm 2020.1版安装破解注册码永久激活(激活到2089年)
Sep 24 Python
教你利用python实现企业微信发送消息
May 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
教你如何把一篇文章按要求分段
2006/10/09 PHP
解析PHP无限级分类方法及代码
2013/06/21 PHP
php目录操作实例代码
2014/02/21 PHP
nicejforms——美化表单不用愁
2007/02/20 Javascript
收藏Javascript中常用的55个经典技巧
2007/08/12 Javascript
使用js正则控制input标签只允许输入的值
2013/07/29 Javascript
Jquery 动态生成表格示例代码
2013/12/24 Javascript
利用window.name实现windowStorage代码分享
2014/01/02 Javascript
Javascript实现带关闭按钮的网页漂浮广告代码
2014/01/12 Javascript
JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解
2015/12/14 Javascript
jquery层级选择器(匹配父元素下的子元素实现代码)
2016/09/05 Javascript
jQuery对table表格进行增删改查
2020/12/22 Javascript
BootstrapTable refresh 方法使用实例简单介绍
2017/02/20 Javascript
NodeJS创建最简单的HTTP服务器
2017/05/15 NodeJs
Vue基于NUXT的SSR详解
2017/10/24 Javascript
详解微信小程序胶囊按钮返回|首页自定义导航栏功能
2019/06/14 Javascript
vue使用自定义指令实现拖拽
2021/01/29 Javascript
解决js中的setInterval清空定时器不管用问题
2020/11/17 Javascript
理解Python中的With语句
2015/02/02 Python
Python系统监控模块psutil功能与经典用法分析
2018/05/24 Python
Python第三方库face_recognition在windows上的安装过程
2019/05/03 Python
Python猴子补丁知识点总结
2020/01/05 Python
pycharm下配置pyqt5的教程(anaconda虚拟环境下+tensorflow)
2020/03/25 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
2020/06/08 Python
Python 爬虫性能相关总结
2020/08/03 Python
html5 css3 动态气泡按钮实例演示
2012/12/02 HTML / CSS
OPPO手机官方商城:中国手机市场出货量第一品牌
2017/10/18 全球购物
美国高品质个性化珠宝销售网站:Jewlr
2018/05/03 全球购物
Notino希腊:购买香水和美容产品
2019/07/25 全球购物
美国排名第一的泳池用品直接来源:In The Swim
2019/09/23 全球购物
销售经理岗位职责
2014/03/16 职场文书
节水口号标语
2014/06/19 职场文书
2015国际残疾人日活动总结
2015/03/24 职场文书
Mysql数据库手动及定时备份步骤
2021/11/07 MySQL
Ajax异步刷新功能及简单案例
2021/11/20 Javascript
德生BCL3000抢先使用感受和评价
2022/04/07 无线电