今天我们用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()

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

python 乒乓球_python使用pygame实现笑脸乒乓球弹珠球游戏相关推荐

  1. Linux乒乓球游戏,python使用pygame实现笑脸乒乓球弹珠球游戏

    今天我们用python和pygame实现一个乒乓球的小游戏,或者叫弹珠球游戏. 笑脸乒乓球游戏功能介绍 乒乓球游戏功能如下: 乒乓球从屏幕上方落下,用鼠标来移动球拍,使其反弹回去,并获得得分,如果没有 ...

  2. Python接弹珠小游戏源代码

    接弹珠游戏,弹珠碰到上方及左右两侧的墙壁进行反弹,反弹,可以理解成弹珠的坐标值变成相反数.当弹珠的圆心坐标值到达上方墙壁时,只需要让坐标变成负数,弹珠就可以向相反的方向移动了. import pyga ...

  3. Pygame之接小弹珠

    目录 游戏介绍 效果展示 游戏代码 项目资源 游戏介绍 小学生都不一定会晚的游戏,用挡板接住会反弹的小球,随着次数的增多,速度变快,分数增多. 效果展示 游戏代码 import pygame as p ...

  4. python弹球游戏实验报告_弹珠小游戏课程设计实验报告

    摘要: 这个小程序是关于弹珠的小游戏, 游戏比较简单, 以小球的速度来区分游戏的难易. 该小程序是用左右键控制游戏的开始和挡板的方向,不让小球落到底端,当然,小球的 速度越快,该游戏的难度也就越大.此 ...

  5. python两人一碰_python运用pygame库实现双人弹球小游戏

    使用python pygame库实现一个双人弹球小游戏,两人分别控制一个左右移动的挡板用来拦截小球,小球会在两板间不停弹跳,拦截失败的一方输掉游戏,规则类似于简化版的乒乓球. 因为是第一次用pygam ...

  6. python弹球游戏双球代码键盘操作_python运用pygame库实现双人弹球小游戏

    使用python pygame库实现一个双人弹球小游戏,两人分别控制一个左右移动的挡板用来拦截小球,小球会在两板间不停弹跳,拦截失败的一方输掉游戏,规则类似于简化版的乒乓球. 因为是第一次用pygam ...

  7. python画的图怎么保存_python通过PyGame绘制图像并保存为图片文件的代码

    把开发过程中常用的一些内容片段记录起来,下边内容是关于python通过PyGame绘制图像并保存为图片文件的内容,希望对大伙有较大好处. ''' pg_draw_circle_save101.py d ...

  8. 编写五子棋的完整python代码_python实现五子棋游戏(pygame版)

    本文实例为大家分享了python五子棋游戏的具体代码,供大家参考,具体内容如下 目录 简介 实现过程 结语 简介 使用python实现pygame版的五子棋游戏: 环境:Windows系统+pytho ...

  9. python pygame鼠标点击_Python中pygame的mouse鼠标事件用法实例

    本文实例讲述了Python中pygame的mouse鼠标事件用法.分享给大家供大家参考,具体如下: pygame.mouse提供了一些方法获取鼠标设备当前的状态 ''' pygame.mouse.ge ...

最新文章

  1. 【arduino】arduino代码运行时间测试函数,代码性能运行时间测试方法
  2. iOS 开发中需要注意的小地方
  3. Mybatis的jdbc参数设置
  4. 【Spring学习】RestTemplate访问Rest服务总结
  5. linux内核支持的加密算法,Linux Kernel(Android) 加密算法总结(三)-应用程序调用内核加密算法接口...
  6. java集合框架之ArrayList与LinkedList的区别
  7. oracle关联字段和序列,oracle(9) 序列和约束
  8. 第十天:SwiftGoodAsOldPhones
  9. 如何进行手机web远程调试——chrome beta
  10. 如何解决pdf文件不能进行黄色标记的问题
  11. 一个日志框架的开源,有些不错的创意。
  12. 在css表格怎么居中对齐,css居中和对齐方法集锦
  13. android addr2line 用法,Android studio中NDK开发(四)——使用addr2line分析Crash日志
  14. 头条App项目测试实战(三)文章写评论功能用例设计
  15. Processing交互应用——躲避炸弹
  16. Unity - 搬砖日志 - 获取 LODGroup 当前显示的 LOD 级别
  17. 网络安全观察报告 惯犯观察
  18. Python爬虫实战—vmgrils图片网站
  19. jquery(文本框添加符号)
  20. 实现数组扁平化的几种方式

热门文章

  1. 从西天取经的九九八十一难来看Java设计模式:模板方法模式
  2. 阳离子铱配合物(Ir1+)|(Ir2-)|Ir(dmecf3ppz)2bpy+(PF6)-齐岳合成
  3. 铱金属配合物Ir(dpbpa)2bphen+PF6-|Ir(dtbpa)3|Ir(dtq)2bpy+PF6-的合成
  4. 【第三方API】顺丰API调用总结-java
  5. 动态规划的最优原理与无后效性解析
  6. matlab中仿真中接地,基于Matlab的配电网接地故障仿真
  7. log4j和slf4j的区别
  8. 游戏角色写实头发制作
  9. Java Cache 入门
  10. HTML和CSS实现京东首页(附GitHub地址)