当前位置: 首页>>代码示例>>Python>>正文


Python Ball.hit方法代码示例

本文整理汇总了Python中ball.Ball.hit方法的典型用法代码示例。如果您正苦于以下问题:Python Ball.hit方法的具体用法?Python Ball.hit怎么用?Python Ball.hit使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ball.Ball的用法示例。


在下文中一共展示了Ball.hit方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: GameLayer

# 需要导入模块: from ball import Ball [as 别名]
# 或者: from ball.Ball import hit [as 别名]
class GameLayer(Layer):
	is_event_handler = True

	def __init__(self):
		super(GameLayer, self).__init__()
		# 添加一个 板子
		self.paddle = Paddle('images/ash.png')
		self.add(self.paddle.sprite)
		self.ball = Ball('images/pokem.png')
		self.add(self.ball.sprite)

		# 添加一个 label 显示当前的游戏状态
		self.hud = Label('皮卡丘: 0')
		self.hud.position = (0, 450)
		self.add(self.hud)
		# 添加一个 label 显示当前游戏关卡
		self.level = Label('Level 1')
		self.level.position = (100, 450)
		self.add(self.level)
		# 添加一个变量来记录金币
		self.gold = 0
		# 设置 4 个按键状态
		self.key_pressed_left = False
		self.key_pressed_right = False
		self.key_pressed_up = False
		self.key_pressed_down = False

		self.blocks = []
		# 调用 reset 函数初始化状态
		self.reset()
		# 定期调用 self.update 函数
		# FPS frame per second 每秒帧数
		self.schedule(self.update)

	def reset(self):
		self.gold = 0
		self.update_hud()
		self.paddle.reset()
		self.ball.reset()

		# 添加砖块并且显示出来
		# 先删除残存的砖块
		for b in self.blocks:
			self.remove(b)
		# 再初始化新的砖块
		self.blocks = []
		levelfile = 'level.txt'
		positions = level_from_file(levelfile)
		number_of_blocks = len(positions)
		for i in range(number_of_blocks):
			b = Sprite('images/pikachu.png', anchor=(0, 0))
			b.position = positions[i]
			# b.position = (randint(0, 500), 400)
			self.add(b)
			self.blocks.append(b)

	def game_over(self):
		print('游戏结束,跪了。捉到了', self.gold, '只皮卡丘')
		# 没接到球,跳转到结束画面(失败)
		scene = Scene(GameOver())
		director.replace(SplitColsTransition(scene))

	def game_win(self):
		# 打完所有皮卡丘,跳转到下一关或(成功)
		scene = Scene(GameWin())
		director.replace(SplitColsTransition(scene))

	def update_hud(self):
		self.hud.element.text = '皮卡丘:' + str(self.gold)

	def update_blocks(self):
		# 判断是否撞到了砖块
		for b in self.blocks:
			if collides(self.ball.sprite, b):
				# self.ball_speedy = -self.ball_speedy
				self.ball.hit()
				self.remove(b)
				self.blocks.remove(b)
				self.gold += 1
				# self.speed += 1
				self.update_hud()
				print('捉到', self.gold, '只皮卡丘')
				break
		if len(self.blocks) == 0:
			self.game_win()

	def update_ball(self):
		if self.ball.fired:
			self.ball.update()
		else:
			bx, by = self.ball.sprite.position
			px, py = self.paddle.sprite.position
			self.ball.sprite.position = (px, by)

		collide = collides(self.ball.sprite, self.paddle.sprite)
		if collide:
			self.ball.hit()
		if self.ball.dead():
			self.game_over()

#.........这里部分代码省略.........
开发者ID:RecklessYan,项目名称:Breakout-Clone,代码行数:103,代码来源:最后的打砖块面向对象修改版.py


注:本文中的ball.Ball.hit方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。