def attack_bomb(self): # 폭탄 if self.pushBombcheck == True: self.BombTime += mainframe.frame_time self.TickTime += mainframe.frame_time # 지속 시간동안 # 모든 몬스터 보스 총알을 무효화시키며 # 지속적인 피해를 입힘 game_world.clear_layer(BULLET) game_world.clear_layer(BOSS_BULLET) if self.TickTime > self.TickDelay: monsterLayer = game_world.get_layer(MONSTER) for monster in monsterLayer: if monster.posY <= 700: monster.hp -= self.bombDamage * ( 1 + Monster_Pattern.difficulty) bossLayer = game_world.get_layer(BOSS) for boss in bossLayer: if boss.posY <= 700: boss.hp -= self.bombDamage * ( 1 + Monster_Pattern.difficulty) self.TickTime = 0 if self.BombTime > self.BombDelay: self.BombTime = 0 self.TickTime = 0 self.pushBombcheck = False
def AI(): global time, hitstate if game_state.nowTurn == 'chick' and game_state.gameStatus != 'End' and time == 12: game_state.randompos() reverse.hpSystem() hitstate = 0 hitTimer() timer.cancel() time = 16 startTimer() if checkover.checkOver() == False: game_state.gameStatus = 'End' gtimer.cancel() game_world.clear_layer(game_world.layer_guide) guide.guidefunc() guideTimer()
def startTimer(): global time, timer if game_state.gameStatus == 'Run': time -= 1 timer = threading.Timer(1, startTimer) timer.start() if time == 0: timer.cancel() game_state.randompos() game_world.clear_layer(game_world.layer_guide) time = 16 startTimer() if checkover.checkOver() == False: game_state.gameStatus = 'End' gtimer.cancel() guide.guidefunc() guideTimer()
def initAll(): global nowTurn, board, gameStatus, beanHp, chickHp beanHp = 10000 chickHp = 10000 loadtimer.hitstate=12 imageloader.beanAnimHp = 10000 imageloader.chickAnimHp = 10000 loadtimer.ttimer.cancel() loadtimer.ktimer.cancel() loadtimer.readytimer.cancel() loadtimer.timer.cancel() loadtimer.gtimer.cancel() game_world.clear_layer(game_world.layer_guide) game_world.clear_layer(game_world.layer_horse) game_world.clear_layer(game_world.layer_hurdle) bgm2.repeat_play() gameStatus='Ready' loadtimer.time = 16 loadtimer.ttime = 900 loadtimer.rtime = 4 loadtimer.kittystate = 0 loadtimer.readyTimer() for i in range(8): for j in range(8): board[i][j] = 'None' # 돌 중복해서 놓지 못하게 # 장애물 생성 for i in range(5): game_world.add_object(Hurdle(ran_list[random.randint(0, 5)], ran_list[random.randint(0, 5)]), game_world.layer_hurdle) # 말 중앙 좌표에 놓기 nowTurn = 'chick' game_world.add_object(Horse(3, 4), game_world.layer_horse) game_world.add_object(Horse(4, 3), game_world.layer_horse) nowTurn = 'bean' game_world.add_object(Horse(3, 3), game_world.layer_horse) game_world.add_object(Horse(4, 4), game_world.layer_horse) guide.guidefunc()
def handle_events(): global nowTurn, board, gameStatus, button1, button2, button3, mode events = get_events() for e in events: if e.type == SDL_QUIT: game_framework.quit() elif e.type == SDL_KEYDOWN: if e.key == SDLK_ESCAPE: if gameStatus=='Run': gameStatus='Pause' elif gameStatus=='End': game_framework.quit() elif e.type == SDL_MOUSEMOTION: if gameStatus=='Pause': tx, ty= e.x, 600-e.y if tx>330 and tx<470 and ty>310 and ty<350 and button1==0: button1=1 button.play() elif tx<=330 or tx>=470 or ty<=310 or ty>=350: button1=0 if tx>340 and tx<460 and ty>255 and ty<295 and button2==0: button2 = 1 button.play() elif tx<=340 or tx>=460 or ty<=255 or ty>=295: button2 = 0 if tx > 363 and tx < 437 and ty > 200 and ty < 240 and button3==0: button3 = 1 button.play() elif tx <= 363 or tx >= 437 or ty <= 200 or ty >= 240: button3 = 0 elif e.type == SDL_MOUSEBUTTONDOWN: if e.button == SDL_BUTTON_LEFT and gameStatus=='Pause': tx, ty = e.x, 600 - e.y if tx>330 and tx<470 and ty>310 and ty<350: gameStatus='Run' loadtimer.timer.cancel() loadtimer.ttimer.cancel() loadtimer.ktimer.cancel() loadtimer.gtimer.cancel() loadtimer.startTimer() loadtimer.totalTimer() loadtimer.kittyTimer() loadtimer.guideTimer() if tx>340 and tx<460 and ty>255 and ty<295: initAll() if tx > 363 and tx < 437 and ty > 200 and ty < 240: game_framework.quit() elif e.button == SDL_BUTTON_LEFT and gameStatus=='Run': tx, ty = e.x, 600 - e.y x, y= -1, -1 for i in range(8): if tx>=(i-1)*58+195+29 and tx<i*58+195+29: x=i for j in range(8): if ty>=(j-1)*58+55+29 and ty<j*58+55+29: y=j if (mode=='AI' and nowTurn == 'bean') or mode=='PVP': if x<=7 and x>=0 and y<=7 and y>=0 and board[y][x]=='None': if reverse.checkReverse(x,y)!=0: game_world.add_object(Horse(x, y),game_world.layer_horse) reverse.reverse(x, y) reverse.hpSystem() loadtimer.hitstate=0 loadtimer.hitTimer() loadtimer.timer.cancel() loadtimer.time = 16 loadtimer.startTimer() if checkover.checkOver()==False: gameStatus = 'End' loadtimer.gtimer.cancel() game_world.clear_layer(game_world.layer_guide) guide.guidefunc() loadtimer.guideTimer()
def cheat_key(event): global monsterSpawnCheck global rectCheck global stage global stageCountMax global stageCount global shop_cheat global bossCheck # 난이도 조절 if (event.type, event.key) == (SDL_KEYDOWN, SDLK_q): monsterSpawnCheck = True stage -= 1 stageCount = 0 stageCountMax -= 5 Monster_Pattern.difficulty -= 1 for map in totalmap.get(2): map.speed -= 100 player.stage_number.setNumbers(stage) elif (event.type, event.key) == (SDL_KEYDOWN, SDLK_w): monsterSpawnCheck = True stage += 1 stageCount = 0 stageCountMax += 1 Monster_Pattern.difficulty += 1 for map in totalmap.get(2): map.speed += 100 player.stage_number.setNumbers(stage) # 충돌체 보이고 안보이고 elif (event.type, event.key) == (SDL_KEYDOWN, SDLK_p): if rectCheck == False: rectCheck = True else: rectCheck = False # 바로 보스 elif (event.type, event.key) == (SDL_KEYDOWN, SDLK_b): monsterSpawnCheck = False game_world.clear_layer(MONSTER) # 상점 elif (event.type, event.key) == (SDL_KEYDOWN, SDLK_n): mainframe.push_state(shop_state) shop_cheat = True # 바로 죽음 elif (event.type, event.key) == (SDL_KEYDOWN, SDLK_m): player.hp = 0 # 플레이어 능력치 조절 elif (event.type, event.key) == (SDL_KEYDOWN, SDLK_z): player.parsingHPBar(50) elif (event.type, event.key) == (SDL_KEYDOWN, SDLK_x): player.parsingBombBar(1) elif (event.type, event.key) == (SDL_KEYDOWN, SDLK_c): player.parsingMoneyBar(1000000) # 보스 패턴 elif (event.type, event.key) == (SDL_KEYDOWN, SDLK_1): if game_world.curtain_object(BOSS, 2) != None: game_world.curtain_object(BOSS, 2).attackID = 1 elif (event.type, event.key) == (SDL_KEYDOWN, SDLK_2): if game_world.curtain_object(BOSS, 2) != None: game_world.curtain_object(BOSS, 2).attackID = 2 elif (event.type, event.key) == (SDL_KEYDOWN, SDLK_3): if game_world.curtain_object(BOSS, 2) != None: game_world.curtain_object(BOSS, 2).attackID = 3 elif (event.type, event.key) == (SDL_KEYDOWN, SDLK_4): if game_world.curtain_object(BOSS, 2) != None: game_world.curtain_object(BOSS, 2).attackID = 4 elif (event.type, event.key) == (SDL_KEYDOWN, SDLK_5): if game_world.curtain_object(BOSS, 2) != None: game_world.curtain_object(BOSS, 2).attackID = 5 elif (event.type, event.key) == (SDL_KEYDOWN, SDLK_6): if game_world.curtain_object(BOSS, 2) != None: game_world.curtain_object(BOSS, 2).attackID = 6
def exit(): bgm.stop() game_world.clear_layer(UIDEFAULT)