Untitled
unknown
plain_text
a month ago
10 kB
1
Indexable
module Main where import Desenhar import Eventos import Graphics.Gloss import ImmutableTowers import Tempo import LI12425 -- | Janela do jogo janela :: Display janela = InWindow "Immutable Towers" (1920, 1080) (0, 0) -- | Background, escolhemos a cor cinza mas acabará por não aparecer, substituimos depois o fundo por imagens na função desenha fundo :: Color fundo = greyN 0.6 -- | Frames por segundo (fps) fr :: Int fr = 60 -- | Função main, é a função principal que inicia o jogo main :: IO () main = do imagens <- imagensLoad play janela fundo fr (ImmutableTowers jogoInicio jogoInicio (MenuInicial Jogar) imagens Nothing Nothing) desenha reageEventos reageTempo {-| Função que carrega as imagens do jogo de modo a passar estas para Picture e armazena-las numa lista de tuplas com a string igual o nome da imagem e a imagem em si, para facilitar a busca pela imagem correta nas outras funções -} imagensLoad :: IO [(String, Picture)] imagensLoad = do menujogar <- loadBMP "imgs/menujogar.bmp" menusair <- loadBMP "imgs/menusair.bmp" menuganhou <- loadBMP "imgs/ganhou.bmp" menuperdeu <- loadBMP "imgs/perdeu.bmp" bgjogo <- loadBMP "imgs/bgjogo.bmp" bgjogogelo <- loadBMP "imgs/bgjogogelo.bmp" bgjogofogo <- loadBMP "imgs/bgjogofogo.bmp" bgjogoresina <- loadBMP "imgs/bgjogoresina.bmp" inimigoEste <- loadBMP "imgs/SoldadoEste.bmp" inimigofogoEste <- loadBMP "imgs/SoldadoFogoEste.bmp" inimigoresinaEste <- loadBMP "imgs/SoldadoResinaEste.bmp" inimigogeloEste <- loadBMP "imgs/SoldadoGeloEste.bmp" inimigoOeste <- loadBMP "imgs/SoldadoOeste.bmp" inimigofogoOeste <- loadBMP "imgs/SoldadoFogoOeste.bmp" inimigoresinaOeste <- loadBMP "imgs/SoldadoResinaOeste.bmp" inimigogeloOeste <- loadBMP "imgs/SoldadoGeloOeste.bmp" inimigoNorte <- loadBMP "imgs/SoldadoNorte.bmp" inimigofogoNorte <- loadBMP "imgs/SoldadoFogoNorte.bmp" inimigoresinaNorte <- loadBMP "imgs/SoldadoResinaNorte.bmp" inimigogeloNorte <- loadBMP "imgs/SoldadoGeloNorte.bmp" inimigoSul <- loadBMP "imgs/SoldadoSul.bmp" inimigofogoSul <- loadBMP "imgs/SoldadoFogoSul.bmp" inimigoresinaSul <- loadBMP "imgs/SoldadoResinaSul.bmp" inimigogeloSul <- loadBMP "imgs/SoldadoGeloSul.bmp" torrefogo <- loadBMP "imgs/TorreFogo.bmp" torreresina <- loadBMP "imgs/TorreResina.bmp" torregelo <- loadBMP "imgs/TorreGelo.bmp" portal <- loadBMP "imgs/portal.bmp" base <- loadBMP "imgs/base.bmp" terrenoagua <- loadBMP "imgs/terrenoagua.bmp" terrenorelva <- loadBMP "imgs/terrenorelva.bmp" terrenoterra <- loadBMP "imgs/terrenoterra.bmp" melhoriaGelo1 <- loadBMP "imgs/melhoriagelo1.bmp" melhoriaGelo2 <- loadBMP "imgs/melhoriagelo2.bmp" melhoriaGelo3 <- loadBMP "imgs/melhoriagelo3.bmp" melhoriaGelo4 <- loadBMP "imgs/melhoriagelo4.bmp" melhoriaFogo1 <- loadBMP "imgs/melhoriafogo1.bmp" melhoriaFogo2 <- loadBMP "imgs/melhoriafogo2.bmp" melhoriaFogo3 <- loadBMP "imgs/melhoriafogo3.bmp" melhoriaFogo4 <- loadBMP "imgs/melhoriafogo4.bmp" melhoriaResina1 <- loadBMP "imgs/melhoriaresina1.bmp" melhoriaResina2 <- loadBMP "imgs/melhoriaresina2.bmp" melhoriaResina3 <- loadBMP "imgs/melhoriaresina3.bmp" melhoriaResina4 <- loadBMP "imgs/melhoriaresina4.bmp" return [("menujogar", menujogar), ("menusair", menusair), ("menuganhou", menuganhou), ("menuperdeu", menuperdeu), ("bgjogo", bgjogo), ("bgjogogelo", bgjogogelo), ("bgjogofogo", bgjogofogo), ("bgjogoresina", bgjogoresina), ("inimigoEste", inimigoEste), ("inimigofogoEste", inimigofogoEste), ("inimigoresinaEste", inimigoresinaEste), ("inimigogeloEste", inimigogeloEste), ("inimigoOeste", inimigoOeste), ("inimigofogoOeste", inimigofogoOeste), ("inimigoresinaOeste", inimigoresinaOeste), ("inimigogeloOeste", inimigogeloOeste), ("inimigoNorte", inimigoNorte), ("inimigofogoNorte", inimigofogoNorte), ("inimigoresinaNorte", inimigoresinaNorte), ("inimigogeloNorte", inimigogeloNorte), ("inimigoSul", inimigoSul), ("inimigofogoSul", inimigofogoSul), ("inimigoresinaSul", inimigoresinaSul), ("inimigogeloSul", inimigogeloSul), ("torrefogo", torrefogo), ("torreresina", torreresina), ("torregelo", torregelo), ("portal", portal), ("base",base), ("terrenoagua", terrenoagua), ("terrenorelva", terrenorelva), ("terrenoterra", terrenoterra), ("melhoriaGelo1", melhoriaGelo1), ("melhoriaGelo2", melhoriaGelo2), ("melhoriaGelo3", melhoriaGelo3), ("melhoriaGelo4", melhoriaGelo4), ("melhoriaFogo1", melhoriaFogo1), ("melhoriaFogo2", melhoriaFogo2), ("melhoriaFogo3", melhoriaFogo3), ("melhoriaFogo4", melhoriaFogo4), ("melhoriaResina1", melhoriaResina1), ("melhoriaResina2", melhoriaResina2), ("melhoriaResina3", melhoriaResina3), ("melhoriaResina4", melhoriaResina4)] -- | Estado do jogo inicial jogoInicio :: Jogo jogoInicio = Jogo { baseJogo = Base { vidaBase = 2000, posicaoBase = (10.5, 5.5), creditosBase = 200 }, portaisJogo = [ Portal { posicaoPortal = (0.5, 4.5), ondasPortal = [ Onda { inimigosOnda = [ inimigoPortal1, inimigoPortal1 ], cicloOnda = 1.0, tempoOnda = 5.0, entradaOnda = 10.0 }, Onda { inimigosOnda = [ inimigoPortal1, inimigoPortal1, inimigoPortal1 ], cicloOnda = 1.0, tempoOnda = 5.0, entradaOnda = 10.0 }, Onda { inimigosOnda = [ inimigoPortal1, inimigoPortal1, inimigoPortal1, inimigoPortal1, inimigoPortal1 ], cicloOnda = 1.0, tempoOnda = 5.0, entradaOnda = 15.0 } ] }, Portal { posicaoPortal = (0.5, 6.5), ondasPortal = [ Onda { inimigosOnda = [ inimigoPortal2, inimigoPortal2 ], cicloOnda = 1.0, tempoOnda = 5.0, entradaOnda = 10.0 }, Onda { inimigosOnda = [ inimigoPortal2, inimigoPortal2, inimigoPortal2 ], cicloOnda = 1.0, tempoOnda = 5.0, entradaOnda = 10.0 }, Onda { inimigosOnda = [ inimigoPortal2, inimigoPortal2, inimigoPortal2, inimigoPortal2, inimigoPortal2, inimigoPortal2, inimigoPortal2, inimigoPortal2, inimigoPortal2, inimigoPortal2 ], cicloOnda = 1.0, tempoOnda = 5.0, entradaOnda = 10.0 } ]} ], torresJogo = [ ], mapaJogo = mapa01, inimigosJogo = [], lojaJogo = [ (50, Torre { posicaoTorre = (0, 0), danoTorre = 30, alcanceTorre = 1.5, rajadaTorre = 2, cicloTorre = 3, tempoTorre = 0, projetilTorre = Projetil { tipoProjetil = Gelo, duracaoProjetil = Finita 1.5 }, nivelTorre = 1 }), (50, Torre { posicaoTorre = (0, 0), danoTorre = 30, alcanceTorre = 1.5, rajadaTorre = 2, cicloTorre = 3, tempoTorre = 0, projetilTorre = Projetil { tipoProjetil = Fogo, duracaoProjetil = Finita 2.0 }, nivelTorre = 1 }), (50, Torre { posicaoTorre = (0, 0), danoTorre = 15, alcanceTorre = 1.5, rajadaTorre = 2, cicloTorre = 1.5, tempoTorre = 0, projetilTorre = Projetil { tipoProjetil = Resina, duracaoProjetil = Finita 1.5 }, nivelTorre = 1 }) ], precoUpgrades = [ (50, 1, Gelo), (50,1,Fogo), (50,1,Resina), (75,2,Gelo), (75,2,Fogo), (75,2,Resina), (100,3,Gelo), (100,3,Fogo), (100,3,Resina) ] } inimigoPortal1 = Inimigo {posicaoInimigo = (0.5, 4.5), direcaoInimigo = Este, vidaInimigo = 100, velocidadeInimigo = 1, ataqueInimigo = 10, butimInimigo = 25, projeteisInimigo = [] } inimigoPortal2 = Inimigo {posicaoInimigo = (0.5, 6.5), direcaoInimigo = Este, vidaInimigo = 100, velocidadeInimigo = 1, ataqueInimigo = 5, butimInimigo = 25, projeteisInimigo = [] }
Editor is loading...
Leave a Comment