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中的类学习笔记
Sep 23 Python
Python二分法搜索算法实例分析
May 11 Python
再谈Python中的字符串与字符编码(推荐)
Dec 14 Python
Python3爬虫学习之将爬取的信息保存到本地的方法详解
Dec 12 Python
Python 获取主机ip与hostname的方法
Dec 17 Python
python过滤中英文标点符号的实例代码
Jul 15 Python
Python类中方法getitem和getattr详解
Aug 30 Python
PyTorch预训练的实现
Sep 18 Python
python可视化实现KNN算法
Oct 16 Python
python的help函数如何使用
Jun 11 Python
Python 如何在字符串中插入变量
Aug 01 Python
在python3.9下如何安装scrapy的方法
Feb 03 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
xajax写的留言本
2006/11/25 PHP
让PHP开发者事半功倍的十大技巧小结
2010/04/20 PHP
三种php连接access数据库方法
2013/11/11 PHP
PHP实现获取域名的方法小结
2014/11/05 PHP
PHP文件操作详解
2016/12/30 PHP
php实现页面纯静态的实例代码
2017/06/21 PHP
JS关键字变色实现思路及代码
2013/02/21 Javascript
js的alert样式如何更改如背景颜色
2014/01/22 Javascript
JavaScript italics方法入门实例(把字符串显示为斜体)
2014/10/17 Javascript
实用又漂亮的BootstrapValidator表单验证插件
2016/05/30 Javascript
js实现一个可以兼容PC端和移动端的div拖动效果实例
2016/12/09 Javascript
JS正则表达式验证账号、手机号、电话和邮箱是否合法
2017/03/08 Javascript
微信小程序数字滚动插件使用详解
2018/02/02 Javascript
微信小程序实现验证码获取倒计时效果
2018/02/08 Javascript
使用mint-ui实现省市区三级联动效果的示例代码
2018/02/09 Javascript
jQuery中内容过滤器简单用法示例
2018/03/31 jQuery
python 用所有标点符号分隔句子的示例
2019/07/15 Python
django自定义模板标签过程解析
2019/12/14 Python
Python使用Tkinter实现滚动抽奖器效果
2020/01/06 Python
Keras实现将两个模型连接到一起
2020/05/23 Python
python语言的优势是什么
2020/06/17 Python
Python 忽略文件名编码的方法
2020/08/01 Python
CSS3近阶段篇之酷炫的3D旋转透视
2016/04/28 HTML / CSS
利用三角函数在canvas上画虚线的方法
2018/01/11 HTML / CSS
美国羊皮公司:Overland
2018/01/15 全球购物
美国木工工具和用品商店:Woodcraft
2019/10/30 全球购物
优秀员工表扬信
2014/01/17 职场文书
派出所正风肃纪剖析材料
2014/10/10 职场文书
旷课检讨书范文
2015/01/27 职场文书
大连星海广场导游词
2015/02/10 职场文书
2015年推广普通话演讲稿
2015/03/20 职场文书
技术员岗位职责范本
2015/04/11 职场文书
z-index不起作用
2021/03/31 HTML / CSS
CSS3实现的侧滑菜单
2021/04/27 HTML / CSS
vue+spring boot实现校验码功能
2021/05/27 Vue.js