def handle_events():
    events = pico2d.get_events()
    for event in events:
        if event.type == pico2d.SDL_QUIT:
            Game_FrameWork.quit()
        elif event.type == pico2d.SDL_KEYDOWN and event.key == pico2d.SDLK_ESCAPE:
            Game_FrameWork.quit()
def update():
    global logo_time

    if( logo_time > 1.0):
        logo_time = 0
        Game_FrameWork.push_state(Title_State)
    delay(0.01)
    logo_time += 0.01
Exemple #3
0
def handle_events():
    events = get_events()
    for event in events:
        if event.type == SDL_QUIT:
            Game_FrameWork.quit()
        elif event.type == SDL_KEYDOWN and event.key == SDLK_ESCAPE:
            Game_FrameWork.quit()
        else:
            player.handle_event(event)
def handle_events():
    events = get_events()
    for event in events:
        if event.type == SDL_QUIT:
            Game_FrameWork.quit()
        else:
            if(event.type, event.key) == (SDL_KEYDOWN, SDLK_ESCAPE):
                Game_FrameWork.quit()
            elif ( event.type, event.key ) == (SDL_KEYDOWN, SDLK_SPACE):
                Game_FrameWork.change_state(Stage1_State)
Exemple #5
0
def update():
    global player, moetato, invincibility_timer, game_over_time, complete_time, background
    if game_over_time != None:
        if get_time() - game_over_time > 1.5:
            Game_FrameWork.change_state(Rank_State)
    if complete_time != None:
        if get_time() - complete_time > 1.5:
            Game_FrameWork.change_state(Rank_State)
    for game_object in Game_World.all_objects():
        game_object.update()
        if isinstance(game_object, Player_Bullet):
            if game_object.velocity > 0:
                if collide(game_object.get_bb_dir_right(),
                           moetato.get_bb_hand()) or collide(
                               game_object.get_bb_dir_right(),
                               moetato.get_bb_body1()) or collide(
                                   game_object.get_bb_dir_right(),
                                   moetato.get_bb_body2()):
                    if not game_object.isExplosion:
                        moetato.hp = moetato.hp - 1
                        game_object.explosion()
                        if moetato.hp <= 0 and not moetato.isDeath and not player.isDeath:
                            moetato.isDeath = True
                            background.isVictory_sound = True
                            background.isVictory = True
                            rank.append(round(background.survival_time, 2))
                            rank.sort()
                            with open('rank_data.json', 'wt') as f:
                                json.dump(rank, f)
                            if complete_time == None:
                                complete_time = get_time()
            else:
                if collide(game_object.get_bb_dir_left(),
                           moetato.get_bb_hand()) or collide(
                               game_object.get_bb_dir_left(),
                               moetato.get_bb_body1()) or collide(
                                   game_object.get_bb_dir_left(),
                                   moetato.get_bb_body2()):
                    if not game_object.isExplosion:
                        moetato.hp = moetato.hp - 1
                        game_object.explosion()
                        if moetato.hp <= 0:
                            moetato.isDeath = True
                            background.isVictory_sound = True
                            background.isVictory = True
                            rank.append(round(background.survival_time, 2))
                            rank.sort()
                            with open('rank_data.json', 'wt') as f:
                                json.dump(rank, f)
                            if complete_time == None:
                                complete_time = get_time()
        if isinstance(game_object, Moe_Tato_Bullet):
            if moetato.isDeath:
                Game_World.remove_object(game_object)
            if not player.isHit and collide(game_object.get_bb(),
                                            player.get_bb(55, 80, 60, 75)):
                if not game_object.isExplosion:
                    player.hp = player.hp - 1
                    if player.hp <= 0:
                        if game_over_time == None:
                            game_over_time = get_time()
                            player.isDeath = True
                            background.isGameOver = True
                    else:
                        invincibility_timer = get_time()
                        game_object.explosion()
                        player.Hit()
def collision():
# ----------------
    global mermadiaCount, lizardList, mermadiaList, lizardCount, player, portal, gemumuList, gemumuCount
    global magicianCount, magicianList, ui
    
    if collide(portal, player) and mermadiaCount == 0:
        f = open("stageInfoLoad.txt", 'w')
       
        data = "%d\n" % ui.money
        f.write(data) 
        data = "%d\n" % ui.score
        f.write(data)
        f.close()

        if lizardCount > 0:
            for lizard in lizardList:
                lizardList.remove(lizard)
                lizardCount -=1
        if gemumuCount > 0:
            for gemumu in gemumuList:
                gemumuList.remove(gemumu)
                gemumuCount -=1
        if magicianCount > 0:
            for magician in magicianList:
                magicianList.remove(magician)
                magicianCount -=1

        Game_FrameWork.change_state(Stage3_State)
        return

    if (lizardCount == 0 and gemumuCount == 0 and magicianCount == 0 ):
        for mermadia in mermadiaList:
            if( mermadia.state != mermadia.ATTACK and collide(player, mermadia) and player.state != player.DIE ):
                mermadia.state = mermadia.ATTACK
                mermadia.frame = 0
            elif( mermadia.state == mermadia.ATTACK and collide(player, mermadia) and mermadia.frame == mermadia.frameNum[mermadia.ATTACK] - 1):
                player.hp -= mermadia.att
                mermadia.frame = 0
                print(player.hp)
            elif( mermadia.state == mermadia.ATTACK and True != collide(player, mermadia) ):
                mermadia.state = mermadia.RUN
                mermadia.frame = 0

    if( mermadiaCount == 0):
        for lizard in lizardList:
            lizard.state = lizard.RUN
        for magician in magicianList:
            magician.state = magician.RUN
        for gemumu in gemumuList:
            gemumu.state = gemumu.RUN

    if( mermadiaCount > 0 and lizardCount > 0):
        for mermadia in mermadiaList:
            for lizard in lizardList:
                if( collide(lizard, mermadia) == True ):
                    if(lizard.state == lizard.RUN):
                        lizard.state = lizard.ATTACK
                        lizard.frame = 0
                    elif(lizard.state == lizard.ATTACK):
                        if(lizard.frame == lizard.frameNum[lizard.ATTACK]-1):
                           mermadia.hp -= lizard.att
                           lizard.frame = 0
                           print("mermadia hp : ", mermadia.hp)

                    if(mermadia.state == mermadia.STAND or mermadia.state == mermadia.RUN):
                        mermadia.state = mermadia.ATTACK
                        mermadia.frame = 0
                    elif(mermadia.state == mermadia.ATTACK):
                        if(mermadia.frame == mermadia.frameNum[mermadia.ATTACK]-1):
                            lizard.hp -= mermadia.att
                            mermadia.frame = 0
                            print("lizard hp : ", lizard.hp)
                    
     
    if( gemumuCount > 0 and mermadiaCount > 0):
        for mermadia in mermadiaList:
           for gemumu in gemumuList:
                if( collide(gemumu, mermadia) == True ):
                    if(gemumu.state == gemumu.RUN):
                        if( gemumu.waveState == 0 ):
                            gemumu.setMonsterX(mermadia.x)
                            gemumu.createEnergyWave()
                            gemumu.state = gemumu.ATTACK
                    elif(gemumu.state == gemumu.ATTACK):
                        if( gemumu.waveState == 0 ):
                            gemumu.setMonsterX(mermadia.x)
                            gemumu.createEnergyWave()
                        if(gemumu.frame == gemumu.frameNum[gemumu.ATTACK]-1):
                            mermadia.hp -= gemumu.att
                            gemumu.frame = 0
                            print("mermadia hp : ", mermadia.hp)

                if( collideDefend(gemumu, mermadia) == True ):
                    if(mermadia.state == mermadia.STAND or mermadia.state == mermadia.RUN):
                        mermadia.state = mermadia.ATTACK
                        mermadia.frame = 0
                    elif(mermadia.state == mermadia.ATTACK):
                        if(mermadia.frame == mermadia.frameNum[mermadia.ATTACK]-1):
                            gemumu.hp -= mermadia.att
                            mermadia.frame = 0
                            print("gemumu hp : ", gemumu.hp)

    if( magicianCount > 0 and mermadiaCount > 0):
        for mermadia in mermadiaList:
           for magician in magicianList:
                if( collide(magician, mermadia) == True ):
                    if(magician.state == magician.RUN):
                        if( magician.fireState == 0 ):
                            magician.createFire(mermadia.x, mermadia.y)
                            magician.state = magician.ATTACK
                    elif(magician.state == magician.ATTACK):
                        if( magician.fireState == 0 ):
                            magician.createFire(mermadia.x, mermadia.y)
                            magician.state = magician.ATTACK
                        if(magician.frame == magician.frameNum[magician.ATTACK]-1):
                            mermadia.hp -= magician.att
                            magician.frame = 0
                            print("mermadia hp : ", mermadia.hp)

                if( collideDefend(magician, mermadia) == True ):
                    if(mermadia.state == mermadia.STAND or mermadia.state == mermadia.RUN):
                        mermadia.state = mermadia.ATTACK
                        mermadia.frame = 0
                    elif(mermadia.state == mermadia.ATTACK):
                        if(mermadia.frame == mermadia.frameNum[mermadia.ATTACK]-1):
                            magician.hp -= mermadia.att
                            mermadia.frame = 0
                            print("magician hp : ", magician.hp)
def handle_events():
    global player, UI, lizardMpValue, gemumuMpValue, magicianMpValue, lizardList, lizardButton, lizardCount
    global gemumuList, magicianList, magicianButton, gemumuButton, gemumuCount, magicianCount, storeSound
    events = get_events()

    for event in events:
        if event.type == SDL_QUIT:
            Game_FrameWork.quit()
        elif (event.type, event.key) == (SDL_KEYDOWN, SDLK_ESCAPE):
               Game_FrameWork.change_state(Title_State)
        elif (event.type, event.key) == (SDL_KEYDOWN, SDLK_i):

            storeSound.play()

            if(ui.storeCheck == False):    
                ui.storeCheck = True
            else:
                ui.storeCheck = False

        elif (event.type, event.key) == (SDL_KEYDOWN, SDLK_1):
              if(player.mp - lizardMpValue > 0 and ui.storeCheck == False):
                 lizardList.append(Lizard(player.x))
                 lizardCount += 1
                 player.mp -= lizardMpValue
              elif(ui.storeCheck == True and ui.money > 100 ):
                 ui.money -= 100
                 for lizard in lizardList:
                     lizard.maxHp += 100
                     lizard.hp = lizard.maxHp

                 
        elif (event.type, event.key) == (SDL_KEYUP, SDLK_2):
              if(player.mp - gemumuMpValue > 0 and ui.storeCheck == False):
                  gemumuList.append(Gemumu(player.x))
                  gemumuCount += 1
                  player.mp -= gemumuMpValue
              elif(ui.storeCheck == True and ui.money > 200 ):
                 ui.money -= 200
                 for gemumu in gemumuList:
                     gemumu.maxHp += 100
                     gemumu.hp = gemumu.maxHp

        elif (event.type, event.key) == (SDL_KEYUP, SDLK_3):
              if(player.mp - magicianMpValue > 0 and ui.storeCheck == False):
                  magicianList.append(Magician(player.x))
                  magicianCount += 1
                  player.mp -= magicianMpValue
              elif(ui.storeCheck == True and ui.money > 400 ):
                 ui.money -= 400
                 for magician in magicianList:
                     magician.maxHp += 100
                     magician.hp = magician.maxHp
        elif (event.type, event.key) == (SDL_KEYUP, SDLK_4):
            if(ui.storeCheck == True and ui.money > 100 ):
                 ui.money -= 100
                 for lizard in lizardList:
                     lizard.att += 50
        elif (event.type, event.key) == (SDL_KEYUP, SDLK_5):
            if(ui.storeCheck == True and ui.money > 200 ):
                 ui.money -= 200
                 for gemumu in gemumuList:
                     gemumu.att += 50
        elif (event.type, event.key) == (SDL_KEYUP, SDLK_6):
            if(ui.storeCheck == True and ui.money > 300 ):
                 ui.money -= 300
                 for magician in magicianList:
                     magician.att += 50
        elif (event.type) == SDL_MOUSEMOTION:
              if(87 <= event.x and event.x <= 113 and 18 <= 600 - event.y and 600 - event.y <= 58):
                 if(player.mp - lizardMpValue > 0):
                      ui.LizardFrame = 27
                 else:
                     ui.LizardFrame = 54
              elif(117 <= event.x and event.x <= 143 and 18 <= 600 - event.y and 600 - event.y <= 58):
                 if(player.mp - gemumuMpValue > 0):
                      ui.GemumuFrame = 27
                 else:
                     ui.GemumuFrame = 54
              elif(147 <= event.x and event.x <= 173 and 18 <= 600 - event.y and 600 - event.y <= 58):
                 if(player.mp - magicianMpValue > 0):
                      ui.MagicianFrame = 27
                 else:
                     ui.MagicianFrame = 54
              else:
                  ui.LizardFrame = 0
                  ui.GemumuFrame = 0
                  ui.MagicianFrame = 0
        
         #UI 위에 마우스를 올려놓은상태에서 왼쪽 버튼을 DOWN 했을경우
        elif (event.type, event.button) == (SDL_MOUSEBUTTONDOWN, SDL_BUTTON_LEFT):
              if(87 <= event.x and event.x <= 113 and 18 <= 600 - event.y and 600 - event.y <= 58):
                 if(player.mp - lizardMpValue > 0):
                      lizardButton = True
                 else:
                     ui.LizardFrame = 54
              elif(117 <= event.x and event.x <= 143 and 18 <= 600 - event.y and 600 - event.y <= 58):
                 if(player.mp - gemumuMpValue > 0):
                      gemumuButton = True
                 else:
                     ui.GemumuFrame = 54
              elif(147 <= event.x and event.x <= 173 and 18 <= 600 - event.y and 600 - event.y <= 58):
                 if(player.mp - magicianMpValue > 0):
                      magicianButton = True
                 else:
                     ui.MagicianFrame = 54

        elif (event.type, event.button) == (SDL_MOUSEBUTTONUP, SDL_BUTTON_LEFT):
              if(87 <= event.x and event.x <= 113 and 18 <= 600 - event.y and 600 - event.y <= 58):
                 if(player.mp - lizardMpValue > 0):
                      lizardButton = False
                      lizardList.append(Lizard(player.x))
                      lizardCount += 1
                      player.mp -= lizardMpValue
              elif(117 <= event.x and event.x <= 143 and 18 <= 600 - event.y and 600 - event.y <= 58):
                  if(player.mp - gemumuMpValue > 0):
                      gemumuButton = False
                      gemumuList.append(Gemumu(player.x))
                      gemumuCount += 1
                      player.mp -= gemumuMpValue
              elif(147 <= event.x and event.x <= 173 and 18 <= 600 - event.y and 600 - event.y <= 58):
                  if(player.mp - magicianMpValue > 0):
                      magicianButton = False
                      magicianList.append(Magician(player.x))
                      magicianCount += 1
                      player.mp -= magicianMpValue
                               
        else:
           player.handle_events(event)
def collision():
# ----------------
    global dragonCount, lizardList, dragonList, lizardCount, player, portal, gemumuList, gemumuCount
    global magicianCount, magicianList, ui
    
    if collide(portal, player) and dragonCount == 0:
        if lizardCount > 0:
            for lizard in lizardList:
                lizardList.remove(lizard)
                lizardCount -=1
        if gemumuCount > 0:
            for gemumu in gemumuList:
                gemumuList.remove(gemumu)
                gemumuCount -=1
        if magicianCount > 0:
            for magician in magicianList:
                magicianList.remove(magician)
                magicianCount -=1

        Game_FrameWork.change_state(Title_State)
        return

    if (lizardCount == 0 and gemumuCount == 0 and magicianCount == 0 ):
        for dragon in dragonList:
            if( dragon.state != dragon.ATTACK and collide(player, dragon) and player.state != player.DIE ):
                dragon.state = dragon.ATTACK
                dragon.frame = 0
            elif( dragon.state == dragon.ATTACK and collide(player, dragon) and dragon.frame == dragon.frameNum[dragon.ATTACK] - 1):
                player.hp -= dragon.att
                dragon.frame = 0
                print(player.hp)
            elif( dragon.state == dragon.ATTACK and True != collide(player, dragon) ):
                dragon.state = dragon.RUN
                dragon.frame = 0

    if( dragonCount == 0):
        for lizard in lizardList:
            lizard.state = lizard.RUN
        for magician in magicianList:
            magician.state = magician.RUN
        for gemumu in gemumuList:
            gemumu.state = gemumu.RUN

    if( dragonCount > 0 and lizardCount > 0):
        for dragon in dragonList:
            for lizard in lizardList:
                if( collide(lizard, dragon) == True ):
                    if(lizard.state == lizard.RUN):
                        lizard.state = lizard.ATTACK
                        lizard.frame = 0
                    elif(lizard.state == lizard.ATTACK):
                        if(lizard.frame == lizard.frameNum[lizard.ATTACK]-1):
                           dragon.hp -= lizard.att
                           lizard.frame = 0
                           print("dragon hp : ", dragon.hp)

                    if(dragon.state == dragon.STAND or dragon.state == dragon.RUN):
                        dragon.state = dragon.ATTACK
                        dragon.frame = 0
                    elif(dragon.state == dragon.ATTACK):
                        if(dragon.frame == dragon.frameNum[dragon.ATTACK]-1):
                            lizard.hp -= dragon.att
                            dragon.frame = 0
                            print("lizard hp : ", lizard.hp)
                    
     
    if( gemumuCount > 0 and dragonCount > 0):
        for dragon in dragonList:
           for gemumu in gemumuList:
                if( collide(gemumu, dragon) == True ):
                    if(gemumu.state == gemumu.RUN):
                        if( gemumu.waveState == 0 ):
                            gemumu.setMonsterX(dragon.x)
                            gemumu.createEnergyWave()
                            gemumu.state = gemumu.ATTACK
                    elif(gemumu.state == gemumu.ATTACK):
                        if( gemumu.waveState == 0 ):
                            gemumu.setMonsterX(dragon.x)
                            gemumu.createEnergyWave()
                        if(gemumu.frame == gemumu.frameNum[gemumu.ATTACK]-1):
                            dragon.hp -= gemumu.att
                            gemumu.frame = 0
                            print("dragon hp : ", dragon.hp)

                if( collideDefend(gemumu, dragon) == True ):
                    if(dragon.state == dragon.STAND or dragon.state == dragon.RUN):
                        dragon.state = dragon.ATTACK
                        dragon.frame = 0
                    elif(dragon.state == dragon.ATTACK):
                        if(dragon.frame == dragon.frameNum[dragon.ATTACK]-1):
                            gemumu.hp -= dragon.att
                            dragon.frame = 0
                            print("gemumu hp : ", gemumu.hp)

    if( magicianCount > 0 and dragonCount > 0):
        for dragon in dragonList:
           for magician in magicianList:
                if( collide(magician, dragon) == True ):
                    if(magician.state == magician.RUN):
                        if( magician.fireState == 0 ):
                            magician.createFire(dragon.x, dragon.y)
                            magician.state = magician.ATTACK
                    elif(magician.state == magician.ATTACK):
                        if( magician.fireState == 0 ):
                            magician.createFire(dragon.x, dragon.y)
                            magician.state = magician.ATTACK
                        if(magician.frame == magician.frameNum[magician.ATTACK]-1):
                            dragon.hp -= magician.att
                            magician.frame = 0
                            print("dragon hp : ", dragon.hp)

                if( collideDefend(magician, dragon) == True ):
                    if(dragon.state == dragon.STAND or dragon.state == dragon.RUN):
                        dragon.state = dragon.ATTACK
                        dragon.frame = 0
                    elif(dragon.state == dragon.ATTACK):
                        if(dragon.frame == dragon.frameNum[dragon.ATTACK]-1):
                            magician.hp -= dragon.att
                            dragon.frame = 0
                            print("magician hp : ", magician.hp)
import Game_FrameWork
import pico2d
pico2d.open_canvas(1900, 800)

import Start_State

Game_FrameWork.run(Start_State)
pico2d.close_canvas()