コード例 #1
0
ファイル: bumpingball.py プロジェクト: mhplus/bubbles
	def init_screen(self):
		def _init():
			pos = 0, 0
			size = runtime.app_width, screen_height
			bg = config.img_dir + 'bumpingball/game_bg.png'
			self.screen = BumpingBallScreen(pos, size, bg)

			win = BumpingBallWindow(self)
			self.replace_window(win)
			self._idle_tag = None
		self._idle_tag = eloop.Timer(1000, _init)
コード例 #2
0
ファイル: bumpingball.py プロジェクト: mhplus/bubbles
	def prepare_ball(self):
		def _move_ball():
			x, y = self.ball.pos 
			self.ball.pos = x, y - 1
			if self.ball.pos[1] <= self.pos[1]:
				self.ani_tag = None
				return False
			return True
		self.ani_tag = eloop.Timer(50, _move_ball)
		color = self.color
		x, y = self.pos
		pos = x, y + 20
		self.ball = Ball(self, self.screen, color, pos)
コード例 #3
0
ファイル: bumpingball.py プロジェクト: mhplus/bubbles
	def handle_move_action_event(self, ev, *args):
		if ev == 'gameover':
			color, pos = args
			self.game_state = 'gameover'
			def _timeout():
				self.timeout_tag = None
				self.game_state = 'idle'
				def _cb():
					self.new_game()
				from gameover_popup import GameOverPopup
				self.dlg = GameOverPopup(self.score)
				self.dlg.add_callback('dialog-close', _cb)
			self.timeout_tag = eloop.Timer(1000, _timeout)
			self.do_collision_effect(color, color, pos)
		elif ev == 'ball-contact':
			color1, color2, pos = args
			self.do_collision_effect(color1, color2, pos)
コード例 #4
0
ファイル: bumpingball.py プロジェクト: mhplus/bubbles
	def start(self):
		self.reset_color()
		def _change_angle():
			if self.direction == 'left':
				angle = self.angle + 1
			else:
				angle = self.angle - 1
			if self.max_angle <= angle:
				self.direction = 'right'
				angle = self.max_angle
			elif angle <= self.min_angle:
				self.direction = 'left'
				angle = self.min_angle
				
			self.angle = angle
			return True
		self.__update_tag = eloop.Timer(20, _change_angle)
コード例 #5
0
ファイル: bumpingball.py プロジェクト: mhplus/bubbles
	def run(self, shape, vector):
		self.shape = shape
		r,g,b,a = shape.color
		shape.color = r, g, b, int(a * .3)
		dt = float(self.expire_time) / self.time_slice
		nv = vector.normalize()
		def _move():
			self.duration += self.time_slice
			if self.expire_time <= self.duration:
				self.run_tag = None
				shape.destroy()
				self.finished_cb()
				return False
			dx, dy = nv * 5
			x, y = shape.pos
			shape.pos = x + dx, y + dy
			return True
		self.run_tag = eloop.Timer(self.time_slice, _move)
コード例 #6
0
ファイル: bumpingball.py プロジェクト: mhplus/bubbles
	def run(self, shape, vector):
		self.shape = shape
		dt = float(self.expire_time) / self.time_slice
		nv = vector.normalize()
		def _move():
			self.duration += self.time_slice
			if self.expire_time <= self.duration:
				self.run_tag = None
				self.finished_cb(shape)
				return False
			dx, dy = nv
			x, y = shape.pos
			shape.pos = x + dx, y + dy
			if self.rotation == 'left':
				shape.angle = (shape.angle - 20) % 360
			else:
				shape.angle = (shape.angle + 20) % 360
			return True
		self.run_tag = eloop.Timer(self.time_slice, _move)
コード例 #7
0
ファイル: bumpingball.py プロジェクト: mhplus/bubbles
	def run(self, shape):
		self.__s = self.speed
		def _move():
			acceleration = self.__s * self.acceleration
			self.__s -= acceleration
			d = self.__s * self.time_slice

			if self.__s < 2:
				self.run_tag = None
				r = shape.r
				while not self.is_collided(shape, r):
					r += 1
				shape.expand(r)
				return False
				
			dx, dy = self._get_dxy(d)
			move_vector = vector.Vector((dx, dy))

			#import time
			#s = time.time()
			self.check_collision(shape, move_vector)
			#print 'collision check elapsed: ', time.time() - s
			return True
		self.run_tag = eloop.Timer(30, _move)