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 IDLE加上自动补全和历史功能
Nov 30 Python
用Python制作在地图上模拟瘟疫扩散的Gif图
Mar 31 Python
基于Python的文件类型和字符串详解
Dec 21 Python
Sublime开发python程序的示例代码
Jan 24 Python
python实现图书管理系统
Mar 12 Python
mac下pycharm设置python版本的图文教程
Jun 13 Python
Django的models模型的具体使用
Jul 15 Python
Python:slice与indices的用法
Nov 25 Python
Python 中由 yield 实现异步操作
May 04 Python
python实现批量转换图片为黑白
Jun 16 Python
解析Python 偏函数用法全方位实现
Jun 26 Python
python中time、datetime模块的使用
Dec 14 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
PDO版本问题 Invalid parameter number: no parameters were bound
2013/01/06 PHP
PHP+jQuery+Ajax实现分页效果 jPaginate插件的应用
2015/10/09 PHP
PHP编程一定要改掉的5个不良习惯
2020/09/18 PHP
js常用函数 不错
2006/09/08 Javascript
Javascript中的变量使用说明
2010/05/18 Javascript
js 幻灯片的实现
2011/12/06 Javascript
初学Jquery插件制作 在SageCRM的查询屏幕隐藏部分行的功能
2011/12/26 Javascript
javascript中的__defineGetter__和__defineSetter__介绍
2014/08/15 Javascript
windows8.1+iis8.5下安装node.js开发环境
2014/12/12 Javascript
js用拖动滑块来控制图片大小的方法
2015/02/27 Javascript
Javascript优化技巧之短路表达式详细介绍
2015/03/27 Javascript
Node.js 条形码识别程序构建思路详解
2016/02/14 Javascript
Bootstrap入门书籍之(五)导航条、分页导航
2016/02/17 Javascript
20行JS代码实现粘贴板复制功能
2018/02/06 Javascript
使用vue-cli编写vue插件的方法
2018/02/26 Javascript
video.js 一个页面同时播放多个视频的实例代码
2018/11/27 Javascript
ng-zorro-antd 入门初体验
2018/12/03 Javascript
Vue实现PC端靠边悬浮球的代码
2020/05/09 Javascript
python中urllib模块用法实例详解
2014/11/19 Python
python中反射用法实例
2015/03/27 Python
对python xlrd读取datetime类型数据的方法详解
2018/12/26 Python
python 判断linux进程,并杀死进程的实现方法
2019/07/01 Python
使用keras框架cnn+ctc_loss识别不定长字符图片操作
2020/06/29 Python
移动端Web页面的CSS3 flex布局快速上手指南
2016/05/31 HTML / CSS
澳大利亚手表品牌:Time IV Change
2018/10/06 全球购物
澳大利亚最受欢迎的超级商场每日优惠:Catch
2020/11/17 全球购物
创业计划书模版
2014/02/05 职场文书
会计岗位职责模板
2014/03/12 职场文书
大学生精神文明先进个人事迹材料
2014/05/02 职场文书
投资意向书
2014/07/30 职场文书
2014年社区党建工作总结
2014/11/11 职场文书
2015年校长新年寄语
2014/12/08 职场文书
高校自主招生校长推荐信
2015/03/23 职场文书
计划生育工作总结2015
2015/04/03 职场文书
解决mysql:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO/YES)
2021/06/26 MySQL
教你在 Java 中实现 Dijkstra 最短路算法的方法
2022/04/08 Java/Android