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 build_world(): gfw.world.init([ 'bg', 'platform', 'enemy', 'boss', 'item', 'player', 'life', 'score', 'ui', 'menu' ]) Player.load_all_images() Jelly.load_all_images() center = get_canvas_width() // 2, get_canvas_height() // 2 for n, speed in [(1, 10), (2, 100), (3, 150)]: bg = HorzScrollBackground('map_bg/bg_%d.png' % n, 'sound/main.mp3') bg.speed = speed gfw.world.add(gfw.layer.bg, bg) global font font = load_font(gobj.RES_DIR + 'font/CookieRun Regular.ttf', 30) global life life = Life() gfw.world.add(gfw.layer.life, life) global score score = Score(canvas_width / 2 - 30, canvas_height - 65, (0, 0, 0), 30) gfw.world.add(gfw.layer.score, score) stage_gen.load(gobj.res('stage_boss.txt')) global obs_sound, crash_sound obs_sound = load_wav(gobj.RES_DIR + 'sound/obs.wav') obs_sound.set_volume(50) crash_sound = load_wav(gobj.RES_DIR + 'sound/crash.wav') crash_sound.set_volume(30) global player player = Player(name) gfw.world.add(gfw.layer.player, player) l, b, w, h = get_canvas_width() - 100, get_canvas_height() - 100, 50, 50 btn = Button("pause_", l, b, w, h, font, "", lambda: pause_set()) gfw.world.add(gfw.layer.ui, btn) global paused, open paused = False open = False
def enter(): gfw.world.init(['bg', 'platform', 'enemy', 'boss', 'item', 'player']) Player.load_all_images() Jelly.load_all_images() center = get_canvas_width() // 2, get_canvas_height() // 2 for n, speed in [(1, 10), (2, 100), (3, 150)]: bg = HorzScrollBackground('map_bg/bg_%d.png' % n) bg.speed = speed gfw.world.add(gfw.layer.bg, bg) global player player = Player() # player.bg = bg gfw.world.add(gfw.layer.player, player) global font font = load_font(gobj.RES_DIR + 'font/CookieRun Regular.ttf', 40) stage_gen.load(gobj.res('stage_boss.txt'))
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