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中的__future__模块
Apr 27 Python
Python随机生成手机号、数字的方法详解
Jul 21 Python
Python使用Phantomjs截屏网页的方法
May 17 Python
python MNIST手写识别数据调用API的方法
Aug 08 Python
PyCharm的设置方法和第一个Python程序的建立
Jan 16 Python
Python中的十大图像处理工具(小结)
Jun 10 Python
Python3 filecmp模块测试比较文件原理解析
Mar 23 Python
Python如何实现的二分查找算法
May 27 Python
彻底搞懂python 迭代器和生成器
Sep 07 Python
python drf各类组件的用法和作用
Jan 12 Python
python 利用openpyxl读取Excel表格中指定的行或列教程
Feb 06 Python
python常量折叠基础知识点讲解
Feb 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
解决phpmyadmin中文乱码问题。。。
2007/01/18 PHP
php将数据库中的电话号码读取出来并生成图片
2008/08/31 PHP
$_GET['goods_id']+0 的使用详解
2013/06/06 PHP
解析web文件操作常见安全漏洞(目录、文件名检测漏洞)
2013/06/29 PHP
深入解析PHP中SESSION反序列化机制
2017/03/01 PHP
网上应用的一个不错common.js脚本
2007/08/08 Javascript
利用404错误页面实现UrlRewrite的实现代码
2008/08/20 Javascript
js各种验证文本框输入格式(正则表达式)
2010/10/22 Javascript
jQuery+CSS3实现3D立方体旋转效果
2015/11/10 Javascript
Javascript中indexOf()和lastIndexOf应用方法实例
2016/08/24 Javascript
Javascript的动态增加类的实现方法
2016/10/20 Javascript
详解webpack之图片引入-增强的file-loader:url-loader
2018/10/08 Javascript
html中创建并调用vue组件的几种方法汇总
2020/11/17 Javascript
Python封装shell命令实例分析
2015/05/05 Python
Python中数字以及算数运算符的相关使用
2015/10/12 Python
django利用request id便于定位及给日志加上request_id
2018/08/26 Python
使用python对excle和json互相转换的示例
2018/10/23 Python
Python产生Gnuplot绘图数据的方法
2018/11/09 Python
python实现对任意大小图片均匀切割的示例
2018/12/05 Python
Python使用sklearn库实现的各种分类算法简单应用小结
2019/07/04 Python
python模块常用用法实例详解
2019/10/17 Python
Pycharm创建项目时如何自动添加头部信息
2019/11/14 Python
Python析构函数__del__定义原理解析
2020/11/20 Python
CSS3常用的几种颜色渐变模式总结
2016/11/18 HTML / CSS
中国最大隐形眼镜网上商城:视客眼镜网
2016/10/30 全球购物
C#中有没有静态构造函数,如果有是做什么用的?
2016/06/04 面试题
采购主管工作职责
2013/12/12 职场文书
函授药学自我鉴定
2014/02/07 职场文书
财务总监管理岗位职责
2014/03/08 职场文书
电视节目策划方案
2014/05/16 职场文书
优秀家长事迹材料
2014/05/17 职场文书
公司租房协议书
2014/10/14 职场文书
2014年人事工作总结范文
2014/11/19 职场文书
婚礼上证婚人致辞
2015/07/28 职场文书
销售口号霸气押韵
2015/12/24 职场文书
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
2021/11/01 MongoDB