python使用pygame实现笑脸乒乓球弹珠球游戏
作者:HelloWorld! 发布时间:2021-07-26 09:49:47
标签:pygame,乒乓球,弹珠球
今天我们用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()
代码中用的乒乓球是如下图片。
总结
1、通过上述代码,功能基本实现
2、可以有很多改进,如通过键盘来操控球拍,如给游戏加上背景音乐,其中加音乐的方法是
pop = pygame.mixer.Sound("pop.wav")
pop.play()
来源:https://blog.csdn.net/weixin_45690272/article/details/103218445
0
投稿
猜你喜欢
- 本文实例讲述了Python使用matplotlib 模块scatter方法画散点图。分享给大家供大家参考,具体如下:# -*-coding:
- 这篇文章主要介绍了python文字和unicode/ascll相互转换函数及简单加密解密实现代码,下面我们来了解一下。import reim
- 本文实例讲述了Python tkinter模块弹出窗口及传值回到主窗口操作。分享给大家供大家参考,具体如下:有些时候,我们需要使用弹出窗口,
- 流行的 JavaScript 库有jQuery,MooTools,Prototype,Dojo和YUI等,这些 JavaScript 库功能
- python装饰器就是用于扩展原函数功能的一种函数,这个函数特殊的地方就是它的返回值也是一个函数,使用Python装饰器的一个好处就是:在不
- 具体代码和说明如下:upload.asp<form action=http://<%= Request.&n
- 前言在讲解如何解决migrate报错原因前,我们先要了解migrate做了什么事情,migrate:将新生成的迁移脚本。映射到数据库中。创建
- 本文实例讲述了Python基于Matplotlib库简单绘制折线图的方法。分享给大家供大家参考,具体如下:Matplotlib画折线图,有一
- 问题:这里只解决一个问题,到底什么是Access?设计一个数据库管理系统,用access在access里面设计好表,查询,然后再用vb做窗体
- 新建项目如下图,比如sigma目录是我要上传的项目,在six-sigma目录下新建三个文件,分别是LICENSE也就是开源协议,README
- LRULRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访
- 设置MySQL数据同步(单向&双向)由于公司的业务需求,需要网通和电信的数据同步,就做了个MySQL的双向同步,记下过程,以后用得到
- 可能不少学习javascript在使用call,apply,callee时会感到困惑,以下希望对于你有所帮助:1、它是函数的方法或属性;2、
- function getElementsByClassName(elem_name,elem_tags) { //elem_name:查询的
- 'subject 信息标题 'company 发布信息的公司名称 'cont
- 前言当需要将多张图像拼接成一张更大的图像时,通常会用到图片拼接技术。这种技术在许多领域中都有广泛的应用,例如计算机视觉、图像处理、卫星图像、
- 监测主机存活的端口#!/usr/bin/env python# coding-utfimport argparseimport socket
- 报表服务器数据库可以为一个或多个报表服务器实例提供内部存储。因为报表服务器数据库架构可能会因为推出新的 Reporting Services
- 目录1. pgzeropgzero的安装2. 游戏设计的过程3. pgzero基础4. pgzero游戏例子5. 总结6. 参考资料1. p
- Memcached是一种高性能的分布式内存对象缓存系统,常用于加速动态Web应用程序。在本文中,我们将使用Python和PyQt5来制作一个