Python中写一个乒乓球类的游戏

简介:

最近开始学Python,感觉挺好玩的,既有脚本语言的灵活性,又有丰富的类库与面向对象的特点,开发起来很方便。

 Python中写一个乒乓球类的游戏

游戏的规则和乒乓球一样,如果妙蛙种子掉地上了就算输,你可以用蓝色的跷跷板弹它,使他不落到地面上。 Game Over后可按任意键继续游戏或选择退出。 代码如下:
  
  
  1. import sys, pygame 
  2. from random import * 
  3. from pygame.locals import * 
  4. from pygame.font import * 
  5. class MyPlayer(pygame.sprite.Sprite): 
  6.     def __init__(self, image_file, location, speed): 
  7.         pygame.sprite.Sprite.__init__(self) 
  8.         self.image = pygame.image.load(image_file) 
  9.         self.rect = self.image.get_rect() 
  10.         self.rect.left, self.rect.top = location 
  11.         self.speed = speed 
  12.         self.status = True 
  13.     def move(self): 
  14.         self.rect = self.rect.move(self.speed) 
  15.         if self.rect.left < 0 or self.rect.right > width: 
  16.             self.speed[0] = -self.speed[0
  17.         if self.rect.top < 0:  
  18.             self.speed[1] = -self.speed[1
  19.         if self.rect.bottom > height: 
  20.             #Game over 
  21.             self.status = False 
  22. class Reflector(pygame.sprite.Sprite): 
  23.     def __init__(self, image_file, location, speed): 
  24.         pygame.sprite.Sprite.__init__(self) 
  25.         self.image = pygame.image.load(image_file) 
  26.         self.rect = self.image.get_rect() 
  27.         self.rect.left, self.rect.top = location 
  28.         self.speed = speed 
  29.     def move(self): 
  30.         self.rect = self.rect.move(self.speed) 
  31.         if self.rect.left < 0 or self.rect.right > width: 
  32.             self.speed[0] = -self.speed[0
  33.         if self.rect.top < 0 or self.rect.bottom > height: 
  34.             self.speed[1] = -self.speed[1
  35. def animate(players): 
  36.     screen.fill([255,255,255]) 
  37.     for player in players: 
  38.         player.move() 
  39.     for player in players:     
  40.         players.remove(player) 
  41.         if pygame.sprite.spritecollide(player,players,False): 
  42.             player.speed[0] = -player.speed[0
  43.             player.speed[1] = -player.speed[1
  44.         players.add(player) 
  45.         player.move() 
  46.         screen.blit(player.image,player.rect) 
  47.     pygame.display.flip() 
  48.     pygame.time.delay(10
  49.  
  50. pygame.init() 
  51. size = width,height = 640,480 
  52. screen = pygame.display.set_mode(size) 
  53. screen.fill([255,255,255]) 
  54. pygame.display.set_caption("MiaoWa Game"
  55. def play(): 
  56.     img_player = "C:\Users\dswu\Desktop\player.png" 
  57.     players = pygame.sprite.Group() 
  58.     for row in range(0,1): 
  59.         for column in range(0,1): 
  60.             playerLocation = [column*250+10,row*250+10
  61.             playerSpeed = [choice([-2,2]), choice([-2,2])] 
  62.             player = MyPlayer(img_player, playerLocation, playerSpeed) 
  63.             players.add(player) 
  64.     img_ref_path = "C:\Users\dswu\Desktop\Reflector.png" 
  65.     ref_pos = [0,464
  66.     ref_speed = [0,0
  67.     reflector = Reflector(img_ref_path, ref_pos, ref_speed) 
  68.     players.add(reflector) 
  69.     running = True 
  70.     while running: 
  71.         key_pressed = pygame.key.get_pressed() 
  72.         for event in pygame.event.get(): 
  73.             if event.type == pygame.QUIT: 
  74.                 game.quit() 
  75.             if event.type == KEYDOWN: 
  76.                 if event.key == K_LEFT:   
  77.                     ref_speed[0] = -2 
  78.                 elif event.key == K_RIGHT: 
  79.                     ref_speed[0] = +2 
  80.         animate(players) 
  81.         if player.status == False: 
  82.             running = False 
  83.     final_text = "Game Over!" 
  84.     ft_font = pygame.font.Font(None, 100
  85.     ft_surf = ft_font.render(final_text, 1, (0,0,0)) 
  86.     screen.blit(ft_surf, [screen.get_width()/2 - ft_surf.get_width()/2100]) 
  87.     tip_text = "Type any key to continue" 
  88.     tip_font = pygame.font.Font(None, 50
  89.     tip_surf = tip_font.render(tip_text, 1, (0,0,0)) 
  90.     screen.blit(tip_surf, [screen.get_width()/2 - tip_surf.get_width()/2200]) 
  91.     pygame.display.flip() 
  92.     keepOn = True 
  93.     while keepOn: 
  94.         key_pressed = pygame.key.get_pressed() 
  95.         for event in pygame.event.get(): 
  96.             if event.type == pygame.QUIT: 
  97.                 pygame.quit() 
  98.             if event.type == KEYDOWN: 
  99.                 play() 
  100. play() 
主要是通过pygame.sprite.Sprite类实现碰撞的监控,通过事件的捕捉及判断实现这种弹力球类的游戏,其中涉及到文字在界面上的显示,游戏中的循环控制,以及重新开始游戏等。 把上面这段代码贴到你的IDLE中,找到下面这两行替换成你机器中的图片路径,按F5就可以运行了。 img_player = "C:\Users\dswu\Desktop\player.png" img_ref_path = "C:\Users\dswu\Desktop\Reflector.png" 由于比较简单,看看代码运行一下应该就差不多明白了,如果有不明白的地方请给我留言,方便一起学习与进步。 平时都在线,欢迎交流。
 

来源:51CTO
相关文章
[oeasy]python083_类_对象_成员方法_method_函数_function_isinstance
本文介绍了Python中类、对象、成员方法及函数的概念。通过超市商品分类的例子,形象地解释了“类型”的概念,如整型(int)和字符串(str)是两种不同的数据类型。整型对象支持数字求和,字符串对象支持拼接。使用`isinstance`函数可以判断对象是否属于特定类型,例如判断变量是否为整型。此外,还探讨了面向对象编程(OOP)与面向过程编程的区别,并简要介绍了`type`和`help`函数的用法。最后总结指出,不同类型的对象有不同的运算和方法,如字符串有`find`和`index`方法,而整型没有。更多内容可参考文末提供的蓝桥、GitHub和Gitee链接。
41 11
[oeasy]python077_int类型怎么用_整数运算_integer_进制转化_int类
本文主要讲解了Python中`int`类型的应用与特性。首先回顾了`int`词根的溯源,探讨了整型变量的概念及命名规则(如匈牙利命名法)。接着分析了整型变量在内存中的存储位置和地址,并通过`type()`和`id()`函数验证其类型和地址。还介绍了整型变量的运算功能,以及如何通过`int()`函数将字符串转化为整数,支持不同进制间的转换(如二进制转十进制)。此外,文章提及了关键字`del`的使用场景,对比了Python与C语言中`int`的区别,并总结了整型与字符串类型的差异,为后续深入学习奠定基础。
43 1
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
198 31
【03】做一个精美的打飞机小游戏,规划游戏项目目录-分门别类所有的资源-库-类-逻辑-打包为可玩的exe-练习python打包为可执行exe-优雅草卓伊凡-持续更新-分享源代码和游戏包供游玩-1.0.2版本
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
111 7
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
314 48
【01】做一个精美的打飞机小游戏,浅尝阿里云通义灵码python小游戏开发AI编程-之飞机大战小游戏上手实践-优雅草央千澈-用ai开发小游戏尝试-分享源代码和游戏包
|
4月前
|
课程设计项目之基于Python实现围棋游戏代码
游戏进去默认为九路玩法,当然也可以选择十三路或是十九路玩法 使用pycharam打开项目,pip安装模块并引用,然后运行即可, 代码每行都有详细的注释,可以做课程设计或者毕业设计项目参考
100 33
python实战——使用代理IP批量获取手机类电商数据
本文介绍了如何使用代理IP批量获取华为荣耀Magic7 Pro手机在电商网站的商品数据,包括名称、价格、销量和用户评价等。通过Python实现自动化采集,并存储到本地文件中。使用青果网络的代理IP服务,可以提高数据采集的安全性和效率,确保数据的多样性和准确性。文中详细描述了准备工作、API鉴权、代理授权及获取接口的过程,并提供了代码示例,帮助读者快速上手。手机数据来源为京东(item.jd.com),代理IP资源来自青果网络(qg.net)。
|
6月前
|
python-类属性操作
【10月更文挑战第11天】 python类属性操作列举
60 1
|
6月前
|
Python基础---类
【10月更文挑战第10天】Python类的定义
90 2
|
11月前
|
如何使用Python实现“猜数字”游戏
本文介绍了使用Python实现“猜数字”游戏的过程。游戏规则是玩家在给定范围内猜一个由计算机随机生成的整数,猜对则获胜。代码中,首先导入random模块生成随机数,然后在循环中获取玩家输入并判断大小,提供猜小、猜大提示。通过增加猜测次数限制、难度选择、优化输入提示和图形化界面等方式可优化游戏。这篇文章旨在帮助初学者通过实际操作学习Python编程。
436 2

热门文章

最新文章