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计算一个文件里字数的方法
Jun 15 Python
Python在Windows和在Linux下调用动态链接库的教程
Aug 18 Python
python 文件操作api(文件操作函数)
Aug 28 Python
Python选课系统开发程序
Sep 02 Python
Python正则表达式教程之二:捕获篇
Mar 02 Python
Windows下安装Django框架的方法简明教程
Mar 28 Python
python合并同类型excel表格的方法
Apr 01 Python
解决Python使用列表副本的问题
Dec 19 Python
tensorflow实现打印ckpt模型保存下的变量名称及变量值
Jan 04 Python
Python 调用有道翻译接口实现翻译
Mar 02 Python
python实现批处理文件
Jul 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读取图片内容并输出到浏览器的实现代码
2013/08/08 PHP
php反射类ReflectionClass用法分析
2016/05/12 PHP
Yii隐藏URL中index.php的方法
2016/07/12 PHP
PHP Laravel 上传图片、文件等类封装
2017/08/16 PHP
TP5(thinkPHP5)框架使用ajax实现与后台数据交互的方法小结
2020/02/10 PHP
phpStorm2020 注册码
2020/09/17 PHP
同一个表单 根据要求递交到不同页面的实现方法小结
2009/08/05 Javascript
不同浏览器的怪癖小结
2010/07/11 Javascript
javascript 使td内容不换行不撑开
2012/11/29 Javascript
jquery 删除cookie失效的解决方法
2013/11/12 Javascript
sliderToggle在写jquery的计时器setTimeouter中不生效
2014/05/26 Javascript
js事件驱动机制 浏览器兼容处理方法
2016/07/23 Javascript
Angular 理解module和injector,即依赖注入
2016/09/07 Javascript
Bootstrap如何创建表单
2016/10/21 Javascript
jquery插件treegrid树状表格的使用方法详解(.Net平台)
2017/01/03 Javascript
微信小程序 同步请求授权的详解
2017/08/04 Javascript
详解基于Angular4+ server render(服务端渲染)开发教程
2017/08/28 Javascript
Vue 实现手动刷新组件的方法
2019/02/19 Javascript
详解vue开发中调用微信jssdk的问题
2019/04/16 Javascript
this.$toast() 了解一下?
2019/04/18 Javascript
用python实现的可以拷贝或剪切一个文件列表中的所有文件
2009/04/30 Python
python的绘图工具matplotlib使用实例
2014/07/03 Python
Python正则捕获操作示例
2017/08/19 Python
python正则表达式及使用正则表达式的例子
2018/01/22 Python
Flask模拟实现CSRF攻击的方法
2018/07/24 Python
真正了解CSS3背景下的@font face规则
2017/05/04 HTML / CSS
HTML5页面音视频在微信和app下自动播放的实现方法
2016/10/20 HTML / CSS
欧舒丹加拿大官网:L’Occitane加拿大
2017/10/29 全球购物
Space NK英国站:英国热门美妆网站
2017/12/11 全球购物
Linux文件系统类型
2012/02/15 面试题
幼儿园六一亲子活动方案
2014/08/26 职场文书
节约每一滴水演讲稿
2014/09/09 职场文书
交通事故赔偿协议书
2014/10/16 职场文书
2015年国庆节活动总结
2015/03/23 职场文书
pandas数值排序的实现实例
2021/07/25 Python
windows server2008 开启端口的实现方法
2022/06/25 Servers