stage 0 Posted May 13, 2014 Report Share Posted May 13, 2014 Boa tarde, Fala Gonçalo, natural de Portugal e preciso de uma ajuda urgente! sou iniciante em ActionScript 3.0 e XML, e preciso de ajuda num jogo. o meu jogo é um SpaceShooter, ando aos tirinhos a matar inimigos no eixo XX, mas o jogo precisa de ter 2 niveis mas feitos em XML, pergunto como se faz a interligação entre ActionScript 3.0 e o XML ? Como se faz um ficheiro XML, por causa dos niveis do jogo? (são 2) Agradecia imenso ajuda, é urgente!! por favor... Senão houver paciencia para me ajudarem (normalmente a tipica resposta é nao terem tempo) se faz favor, enviem-me bons links onde eu perceba como se usa XML com ActionScript 3.0. Obrigado mais uma vez. Gonçalo Link to post Share on other sites
nelsonr 331 Posted May 13, 2014 Report Share Posted May 13, 2014 Boas, nunca mexi em ActionScript, mas vê aqui: http://www.republicofcode.com/tutorials/flash/xml/ Link to post Share on other sites
stage 0 Posted May 13, 2014 Author Report Share Posted May 13, 2014 Muito obrigado nelsonr, mas preciso de algo mais concreto. Esse tipo de sites sao muito generalistas e acabo por ficar na mesma. Se estou a tentar que me ajudem em jogos, preciso de apoio virado para esse tipo de situações, XML virado para jogos. Ler, guardar, carregar (exemplos). Obrigado na mesma. Link to post Share on other sites
nelsonr 331 Posted May 13, 2014 Report Share Posted May 13, 2014 Errr... o XML é apenas uma estrutura, o conteúdo é o que quiseres. Que conteúdo queres guardar no ficheiro? Que informação necessitas para gerar cada nivel? Eu normalmente guardo em XML as definições gerais do jogo, entidades e niveis. Exemplo: <game> <levels> <level number="1" timeLimitInMinutes="5"> <Music file="music.ogg" Loop="true" /> <enemies> <enemy type="shuttle01" health="100" weaponDamage="10" /> <enemy type="shuttle02" health="200" weaponDamage="50" /> <enemy type="boss01" health="500" weaponDamage="70" /> </enemies> </level> <level number="2" timeLimitInMinutes="7"> <Music file="music.ogg" Loop="true" /> <enemies> <enemy type="shuttle01" health="150" weaponDamage="20" /> <enemy type="shuttle02" health="250" weaponDamage="70" /> <enemy type="boss02" health="800" weaponDamage="100" /> </enemies> </level> </levels> </game> Link to post Share on other sites
stage 0 Posted May 14, 2014 Author Report Share Posted May 14, 2014 Bom dia, Respondendo às duas questões colocadas, no ficheiro XML preciso de determinar por exemplo que ao fim de "matar" (por exemplo) 30 inimigos, o 1º nivel desaparece e carrega-se o 2º nivel. De resto, em XML defenir que inimigos vão aparecer no 2º nivel, o numero de vidas que tenho (4 por exemplo) tanto no 1º nivel, como no 2º nivel. Epa deve haver mais coisas que se tenham que definir mas nao tenho a "experiencia" toda para dizer mais coisas importantes para um jogo. Acredito que esse exemplo mostrado, seja importante. Se poderes colocar mais exemplos, parecidos ao que acabei de referir (do que penso ser preciso), seria de extrema utilidade. Até agora, agradeço imenso o teu apoio... tenham paciência com os "novatos" nestas andanças... Cumprimentos Link to post Share on other sites
nelsonr 331 Posted May 14, 2014 Report Share Posted May 14, 2014 Exemplo parecido com o que indicas <game> <player initialLives="5" initialHealth="100" /> <levels> <level number="1" requiredKills="30"> <enemies> <enemy type="shuttle01" health="100" weaponDamage="10" startTimeInMS="5000" repeat="5" intervalInMS="500" /> <enemy type="shuttle02" health="200" weaponDamage="50" startTimeInMS="5000" repeat="10" intervalInMS="500" /> <enemy type="boss01" health="500" weaponDamage="70" startTimeInMS="7000" /> </enemies> </level> </levels> </game> Como usar o XML: - Lês o número de vidas e energia inicial do player a partir do atributo no elemento game/player. - Vais ler ao XML as configurações do nivel em que estás.(procuras o elemento level com o atributo number igual ao nivel) - Lês o atributo requiredKills do elemento level do nivel atual - Lês a lista de inimigos do nivel. Nesse exemplo coloquei o atributo startTimeInMs para indicar quando é que o inimigo aparece (ex: após 5000 ms ou 5 segundos). - Repete este inimigo durante 5 vezes com um intervalo de 500ms entre eles. - Quando estes inimigos desaparecem (são destruidos), passas para o inimigo seguinte. - No inimigo seguinte, tens definido um startTimeInMs de 5000ms, que indica que só deve aparecere passados 5 segundos do ultimo inimigo anterior ter sido destruido. - Repete este inimigo durante 10 vezes com um intervalo de 500ms entre eles. - Quando estes inimigos desaparecem (são destruidos), passas para o inimigo seguinte que é o boss.- - O boss tem definido que aparece passados 7 segundos do ultimo inimigo da wave anterior ter sido destruido Link to post Share on other sites
stage 0 Posted May 14, 2014 Author Report Share Posted May 14, 2014 E a defenição da passagem do 1º nivel, para o 2º nivel? Não esta nesse 2º exemplo, pois não? Obrigado. Link to post Share on other sites
nelsonr 331 Posted May 14, 2014 Report Share Posted May 14, 2014 Supostamente depois do ultimo inimigo ser destruido (nesse caso o boss do nivel), como não tens mais nenhum definido, passa para o nivel seguinte Link to post Share on other sites
stage 0 Posted May 14, 2014 Author Report Share Posted May 14, 2014 Mas isso não é "automático", certo? tenho que "programar" essa transição de niveis? Sem me levares a "mal" é isso que ainda nao percebi. o resto que tens falado e escrito estou a acompanhar, agora a transição de niveis faz-me confusão não é automatico, certo? tenho que definir em código, no XML digo eu. Cumprimentos Link to post Share on other sites
nelsonr 331 Posted May 14, 2014 Report Share Posted May 14, 2014 O ficheiro XML apenas serve para definir informação, não faz nada automaticamente. O teu jogo é que vai ler a informação do XML e processar de acordo com o funcionamento pretendido. Link to post Share on other sites
stage 0 Posted May 14, 2014 Author Report Share Posted May 14, 2014 Ou seja, na parte do "ActionScript" (é tipo Javascript) é que tenho que fazer essa situação dos niveis? tipo, "chamar" o ficheiro XML ? Criar uma função, certo? errado? Cumprimentos Link to post Share on other sites
nelsonr 331 Posted May 14, 2014 Report Share Posted May 14, 2014 O jogo tem de ser feito em ActionScript, não vais chamar nenhum ficheiro XML. O ficheiro XML será apenas para conter as várias configurações, de modo a facilitar alterares por exemplo o numero de inimigos ou a vida inicial sem teres de ir mexer no teu código. Link to post Share on other sites
stage 0 Posted May 14, 2014 Author Report Share Posted May 14, 2014 Agora é que me baralhas-te todo .... estava eu a seguir uma logica de pensamento e agora, o ficheiro XML não é "chamado"!? entao onde entra a funcionar o ficheiro XML, em que parte? pensava que ia criar tipo uma funçao no codigo actionscript, para ir buscar dados ao XML..... afinal funciona como? (desculpa) Link to post Share on other sites
nelsonr 331 Posted May 14, 2014 Report Share Posted May 14, 2014 Sim, o ficheiro XML é lido para que o teu jogo tenha informação suficiente para gerar os niveis. Quando disse que não ias chamar o ficheiro era que o ficheiro não vai fazer nada por si mesmo. Link to post Share on other sites
stage 0 Posted May 14, 2014 Author Report Share Posted May 14, 2014 "....tenha informação suficiente para gerar os niveis...." pegando nesta tua frase, é tudo o que ja temos falado do que deve estar la dentro do ficheiro XML, certo? o ficheiro XML deve conter as informações (inimigos, vidas, quantos inimigos devo abater, etc...) para que haja essa passagem de niveis? penso correto, certo? Link to post Share on other sites
nelsonr 331 Posted May 14, 2014 Report Share Posted May 14, 2014 Sim. Pensa assim, esquece o ficheiro XML, como tinhas essa informação? Provavelmente em constantes definidas no código. Quando precisasses de alterar a vida do jogador, ias a essa constante e alteravas e geravas o build novamente. Mas ao teres essa informação no XML, basta alterar no ficheiro e reiniciar o jogo, sem alterares o codigo Link to post Share on other sites
stage 0 Posted May 14, 2014 Author Report Share Posted May 14, 2014 Obrigado. peço imensas desculpas por tudo isto, mas para mim esta a ser importante. Relativamente aos 2 códigos que puses-te, quais sao as diferenças principais ? (primeiro responde a esta questão) 2ª questão - o que é, e para que serve o requiredKills ? Obrigado mais uma vez. Link to post Share on other sites
nelsonr 331 Posted May 14, 2014 Report Share Posted May 14, 2014 Relativamente aos 2 códigos que puses-te, quais sao as diferenças principais ? (primeiro responde a esta questão) O primeiro exemplo de XML foi num formato geral, sem saber exactamente o que pretendias. No segundo fiz alterações para incluir a informação que indicaste que precisas 2ª questão - o que é, e para que serve o requiredKills ? Era apenas um exemplo onde podias guardar a informação que indicaste aqui: preciso de determinar por exemplo que ao fim de "matar" (por exemplo) 30 inimigos, o 1º nivel desaparece e carrega-se o 2º nivel. Link to post Share on other sites
stage 0 Posted May 14, 2014 Author Report Share Posted May 14, 2014 Muito obrigado. percebido. o valor que esta à frente de weaponDamage="10" é o que ? ja que falo nisto, quero perceber uma coisa, "weaponDamage", "requiredKills", e outras que existam é a pessoa que cria (neste caso tu) ou ja é assim que existe ? (desculpa se é pergunta básica) Link to post Share on other sites
coxosclassic 5 Posted May 14, 2014 Report Share Posted May 14, 2014 (edited) boas, Tal como o nelsonr disse, o xml é apenas uma estrutura onde sao definidas as propriedades do teu jogo (e nao a logica). Pegando no exemplo do nelsonr: <player initialLives="5" initialHealth="100" /> pegas nesta informacao e constrois o teu object de 'Player' com 5 vidas, e a health a 100. <level number="1" requiredKills="30"> ... aqui, é a informacao relativa ao 1º nivel (number="1"). O 'requiredKills' indica que iras precisar de 30 kills para passares para o proximo nivel. <enemytype="shuttle01" health="100" weaponDamage="10" startTimeInMS="5000" repeat="5" intervalInMS="500"/> ... O type, o tipo do teu objecto de inimigo, ira ser 'shuttle01', e ira comecar com uma health de 100, o damage sera de 10 e por ai fora. estas informacoes todas, irao servir para definires as propriedades dos teus objectos (player, level e enemy). Toda a logica de jogo, tipo a health status do teu player ou dos teus inimigos, ira ser feita por actionscript. Na tua class principal carregas o xml e logo a seguir constrois os objectos (Level, Player e Enemy) com as definicoes que veem do xml, e apartir dai constrois toda a logica do jogo em ActionScript. Tenta é so perceber, que o xml é apenas a estrutura de dados para o teu jogo, e nao a logica. alguma duvida diz. cumps, cc Edited May 14, 2014 by coxosclassic 1 Report Cumps, cc Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now