当前位置: 首页 > 编程笔记 >

python使用pygame实现笑脸乒乓球弹珠球游戏

翟承志
2023-03-14
本文向大家介绍python使用pygame实现笑脸乒乓球弹珠球游戏,包括了python使用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()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本教程将教你如何使用 Kivy 编写一款乒乓球游戏。我们将从一个基本的应用程序开始,描述创建这个游戏的每个步骤。 Kivy 是用 Python 和 Cython 编写的,基于 OpenGL ES 2,支持各种输入设备并拥有丰富的部件库。使用相同的代码,你可直接实现多平台应用,包括 Windows、macOS、Linux、Android 和 iOS。所有 Kivy 部件都支持多点触控。

  • 我试图用Java创建一个简单的乒乓球游戏进行处理。我还没有完成,一切都很顺利,只是我不能让球从乒乓桨上反弹。我已经成功地做到了,如果球低于桨板,它会反弹回来,但出于某种原因,如果球高于桨板,它会穿过。 paddleFunctions选项卡:

  • 通常只有Y轴运动在这样的游戏中可用,但我决定让它在这样一种方式,X轴桨运动也被允许。 起初,我认为这与像素有关,但我也尝试了多种方式改变桨碰撞,但没有任何积极的结果。无论我试了多少次,球都不会从桨上弹下来。 代码非常简单,我每次只移动1px: 为了移动桨叶,我使用简单的标志,在按键时将移动方向设置为“开”,在按键释放时设置为“关”。我在不定式循环中运行它,所以它不断地被执行。 这就是“run()”

  • 本文向大家介绍python pygame实现球球大作战,包括了python pygame实现球球大作战的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python pygame球球大作战的具体代码,供大家参考,具体内容如下 球球大作战:(大球吃小球,代码如下:) 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 我想做一个正在处理的乒乓球游戏。但是球的移动不是很平稳。我试着改变帧速率并降低球的速度,但是移动速度似乎不是恒定的。这可能是性能问题吗?我是否做错了什么,或者即使对于简单的游戏,处理可能也不是正确的事情?(我的目标是试用processing.js,制作一款没有插件的游戏)。这是我的代码:

  • 本文向大家介绍如果用乒乓球塞满一个教室,请你估算所需乒乓球数量。相关面试题,主要包含被问及如果用乒乓球塞满一个教室,请你估算所需乒乓球数量。时的应答技巧和注意事项,需要的朋友参考一下 先计算乒乓球的体积:由于测量麻烦,就用一杯水,把乒乓球塞进去,测量溢出水的体积。 再计算乒乓球的直径。 测量教室的宽、高。分别用宽/乒乓球直径=n(取整),高/乒乓球直径=m(取整)。 再用教室的长/乒乓球直径=x(