Esempio n. 1
0
    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
Esempio n. 2
0
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()
Esempio n. 3
0
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()
Esempio n. 6
0
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
Esempio n. 7
0
def exit():
    bgm.stop()
    game_world.clear_layer(UIDEFAULT)