def create_object(ch, x, y): if ch in ['1', '2', '3', '4', '5']: obj = Jelly(ord(ch) - ord('1'), x, y) gfw.world.add(gfw.layer.item, obj) #print('creating Jelly', x, y) elif ch in ['O', 'P']: dy = 1 if ch == 'Q' else 3 y -= dy * BLOCK_SIZE // 2 x -= BLOCK_SIZE // 2 obj = Platform(ord(ch) - ord('O'), x, y) gfw.world.add(gfw.layer.platform, obj) #print('creating Platform', x, y) elif ch in ['B']: pass else: ao = factory.create(ch, x, y) if ao is None: global ignore_char_map if ch not in ignore_char_map: print("Error? I don't know about: '%s'" % ch) ignore_char_map |= {ch} return l, b, r, t = ao.get_bb() ao.pass_wh(r - l, t - b) gfw.world.add(gfw.layer.enemy, ao)
def __init__(self, setting: settings, shoot_sound): self.shoot_sound = shoot_sound self.fleet = list() self.move_speed = setting.alien_speed self.creep_speed = setting.creep_speed self.gun = Gun(setting) self.setting = setting self.saucer = Saucer(setting, Vector2(-64, 64 * 2)) for i in range(10): self.fleet.append(Squid(setting, pygame.Vector2(70 * i, 70))) for i in range(10): self.fleet.append(Squid(setting, pygame.Vector2(70 * i, 70 * 2))) for i in range(10): self.fleet.append(Jelly(setting, pygame.Vector2(70 * i, 70 * 3))) for i in range(10): self.fleet.append(Jelly(setting, pygame.Vector2(70 * i, 70 * 4))) for i in range(10): self.fleet.append(Crab(setting, pygame.Vector2(70 * i, 70 * 5))) for i in range(10): self.fleet.append(Crab(setting, pygame.Vector2(70 * i, 70 * 6)))
def gen_sprites(self): self.sprite_models.append( Crab( self.setting, Vector2(self.screen_dim.x / 2 - 128, self.screen_dim.y / 10 * 3))) self.sprite_models.append( Jelly( self.setting, Vector2(self.screen_dim.x / 2 - 128, self.screen_dim.y / 10 * 4))) self.sprite_models.append( Squid( self.setting, Vector2(self.screen_dim.x / 2 - 128, self.screen_dim.y / 10 * 5))) self.sprite_models.append( Saucer( self.setting, Vector2(self.screen_dim.x / 2 - 128, self.screen_dim.y / 10 * 6)))
def make_jelly(): sh = random.randrange(1, 4) if sh == 1: for i in range(10): x = canvas_width + i * 60 y = 200 jelly = Jelly(n_speed, x, y) gfw.world.add(gfw.layer.jelly, jelly) spine = Spine2(n_speed, canvas_width + 10) gfw.world.add(gfw.layer.spine, spine) spine = Spine2(n_speed, canvas_width + 400) gfw.world.add(gfw.layer.spine, spine) elif sh == 2: for i in range(4): x = canvas_width + i * 60 y = 250 + i * 60 jelly = Jelly(n_speed, x, y) gfw.world.add(gfw.layer.jelly, jelly) for i in range(4): x = canvas_width + (i + 4) * 60 y = 430 - i * 60 jelly = Jelly(n_speed, x, y) gfw.world.add(gfw.layer.jelly, jelly) spine = Spine1(n_speed, canvas_width + 150) gfw.world.add(gfw.layer.spine, spine) elif sh == 3: for i in range(2): x = canvas_width + i * 60 y = 200 + i * 60 jelly = Jelly(n_speed, x, y) gfw.world.add(gfw.layer.jelly, jelly) for i in range(4): x = canvas_width + (i + 2) * 60 y = 260 jelly = Jelly(n_speed, x, y) gfw.world.add(gfw.layer.jelly, jelly) for i in range(2): x = canvas_width + (i + 6) * 60 y = 260 - i * 60 jelly = Jelly(n_speed, x, y) gfw.world.add(gfw.layer.jelly, jelly) spine = Spine2(n_speed, canvas_width + 100) gfw.world.add(gfw.layer.spine, spine) spine = Spine2(n_speed, canvas_width + 200) gfw.world.add(gfw.layer.spine, spine)
def update(): create = random.randint(0, 100) TrapPattern = random.randint(0, 3) # 오브젝트 생성 if character.item_count > 0.01: jelly = Jelly() # 젤리 (점수) game_world.add_object(jelly, 0) # 0.01초마다 5% 확률로 포션 생성 if create < 5: potion = Potion() game_world.add_object(potion, 0) character.item_count = 0 if character.count >= 1.0: if TrapPattern == 0: jump_trap = jTrap() # 1단 점프 함정 game_world.add_object(jump_trap, 0) character.count = 0 elif TrapPattern == 1: double_jump_trap = djTrap() # 2단 점프 함정 game_world.add_object(double_jump_trap, 0) character.count = 0 elif TrapPattern == 2: strap = sTrap() # 슬라이드 함정 game_world.add_object(strap, 0) character.count = 0 # 게임월드 업데이트 for game_object in game_world.all_objects(): game_object.update() # 충돌처리 for obj in game_world.all_objects(): if isinstance(obj, Jelly) and hp.HP_count >= 0: if collides(character, obj): character.score += 5 jelly_sound.play() game_world.remove_object(obj) if isinstance(obj, Potion): if collides(character, obj) and hp.HP_count >= 0: hp.HP_count += 30 item_eat.play() game_world.remove_object(obj) # 함정 if isinstance(obj, jTrap): if collides(character, obj) and hp.HP_count >= 0: game_world.remove_object(obj) collide_sound.play() character.fps = 0 character.state = character.COLLIDE hp.HP_count -= 50 if isinstance(obj, djTrap): if collides(character, obj) and hp.HP_count >= 0: game_world.remove_object(obj) collide_sound.play() character.fps = 0 character.state = character.COLLIDE hp.HP_count -= 50 if isinstance(obj, sTrap): if collides(character, obj) and hp.HP_count >= 0: game_world.remove_object(obj) collide_sound.play() character.fps = 0 character.state = character.COLLIDE hp.HP_count -= 50 update_score() if hp.HP_count <= 0: character.x -= 10 * game_framework.frame_time if character.x <= -500: game_framework.change_state(Score_state)
def update(): create = random.randint(0, 100) TrapPattern = random.randint(0, 3) # 오브젝트 생성 if cookie.itemcount > 0.01: jelly = Jelly() # 젤리 (점수) game_world.add_object(jelly, game_world.layer_obstacle) # 0.01초마다 5% 확률로 포션 생성 if create < 5: potion = Potion() game_world.add_object(potion, game_world.layer_obstacle) cookie.itemcount = 0 # 함정의 경우 if cookie.count >= 1.0: if TrapPattern == 0: jtrap = jTrap() # 1단 점프 함정 game_world.add_object(jtrap, game_world.layer_obstacle) cookie.count = 0 elif TrapPattern == 1: djtrap = djTrap() # 2단 점프 함정 game_world.add_object(djtrap, game_world.layer_obstacle) cookie.count = 0 elif TrapPattern == 2: strap = sTrap() # 슬라이드 함정 game_world.add_object(strap, game_world.layer_obstacle) cookie.count = 0 # 게임월드 업데이트 game_world.update() # 충돌처리 for obj in game_world.all_objects(): if isinstance(obj, Jelly) and hp.HP_count >= 0: if collides(cookie, obj): cookie.score += 5 jelly_sound.play() game_world.remove_object(obj) if isinstance(obj, Potion): if collides(cookie, obj) and hp.HP_count >= 0: hp.HP_count += 30 item_sound.play() game_world.remove_object(obj) # 함정 if isinstance(obj, jTrap): if collides(cookie, obj) and hp.HP_count >= 0: game_world.remove_object(obj) collide_sound.play() cookie.fps = 0 cookie.state = cookie.COLLIDE hp.HP_count -= 50 if isinstance(obj, djTrap): if collides(cookie, obj) and hp.HP_count >= 0: game_world.remove_object(obj) collide_sound.play() cookie.fps = 0 cookie.state = cookie.COLLIDE hp.HP_count -= 50 if isinstance(obj, sTrap): if collides(cookie, obj) and hp.HP_count >= 0: game_world.remove_object(obj) collide_sound.play() cookie.fps = 0 cookie.state = cookie.COLLIDE hp.HP_count -= 50 update_score() if hp.HP_count <= 0: cookie.x -= 10 * game_framework.frame_time if cookie.x <= -500: game_framework.change_state(Score_state)
""" import pygame from globals import * from time import sleep from functions import start_graphics, load_best_dna_saved, draw_graphics_test, update_test from jelly import Jelly if __name__ == "__main__": if ENABLE_GRAPHICS: start_graphics() best_dna = load_best_dna_saved() print(best_dna) jelly = Jelly() jelly.set_dna(best_dna) print("Jelly INFOS::", jelly.golds, jelly.horses) year = 0 while year < years: print("\nYEAR", year) if ENABLE_GRAPHICS: draw_graphics_test(jelly, year) update_test(jelly, year) year += 1