Page 1 of 1

JEU Boxhead en axe

Unread postPosted: 31 Oct 2014, 18:25
by Plokki
Salut ! Je suis nouveau sur le site et j'ai appris l'axe parser début aout. J'aimerais donc savoir ce que vous pensez de ce jeu que j'ai réalisé:
BOXHEAD.gif


C'est en fait une adaptation du jeu flash Boxhead (pour les connaisseurs) cependant je n'ai mis qu'une seule map (de taille respectable ! ce n'est autre que le back-buffer que je lis comme une map, du coup on peut la modifier très simplement et en temps réel avec les fonctions de dessins B-) ) de plus je n'ajouterai pas les diables (les projectiles sont durs à gérer et l' IA est plus complexe)

Le principe du jeu est simple: vous devez survivre le plus longtemps possible aux vagues de zombies qui déferlent dans l'arène.
Votre barre de vie augmente toute les 10 vagues (en haut à gauche)
Les petits Z autour de vous indiquent la direction approximative des zombies et vous pouvez vous aidez de la mini-map pour vous orienter ou de la grande map avec alpha (vous êtes le rectangle qui bouge)

Le jeu fonctionne en 15MHz sans lagger et avec une fluidité constante jusqu'à 20 zombies. Bon après la calculatrice à du mal. Le jeu et plus rapide en vrai que sur l'émulateur donc pas d'inquiétude.
Bref dites moi ce que vous en pensez, j'attends vos impressions avec impatience. Si j'ai oublié un truc demandez-moi. :D

Re: JEU Boxhead en axe

Unread postPosted: 31 Oct 2014, 19:00
by Clément.7
Waouh trop classe ! Et tu dis que t'as appris l'axe y a 1 mois ?
Si oui, bravo ton jeu est très bien fait (je le teste sur ma TI-84+ SE et je te dis ce que j'en pense)

EDIT : c'est bon j'ai testé : jeu très bien, fluide, mais BEAUCOUP TROP DUR !!!
Sinon bravo c'est très bien fait !

Re: JEU Boxhead en axe

Unread postPosted: 31 Oct 2014, 19:14
by Plokki
non aout c'était il y a 3 mois ;)

dur ? en fait tu n'es pas obligé d'attendre que le zombie te tombe dessus pour tirer, les indicateurs de positions sont là pour ça: tu te mets dans l'alignement et tu tires ! ( attention les balles ne vont pas "across the map" ,elles disparaissent un peu après être sorties de l'écran)
Sinon les zombies n'ont pas vraiment d'IA, du coup si tu te place correctement tu as juste à tirer et les zombies vont mourir à la chaine sans pouvoir te frapper, de plus tu as peut être remarqué les piliers aux angles de la map ? cache toi derrière, ils ne les contourneront pas.

P.S. Merci à KinderMoumoute pour le tuto sur l'axe c'est génial !! D'ailleurs je suis en train de faire un tower défense je vous tiens au courant ! :p

Re: JEU Boxhead en axe

Unread postPosted: 31 Oct 2014, 19:19
by Hayleia
Pendant que je lisais ton post, je me disais "pas mal, pas mal".. jusqu'à ce que je lise "15 MHz" :P
Ça, ça m'a fait ouvrir ton code source, et j'y ai découvert des choses comme ça:
Code: Select all
{O*3+L2+3}→J
{O*3+L2+1}→K
{O*3+L2+2}→L


ou ça
Code: Select all
If J=0
{O*3+L2+1}--
ElseIf J=1
{O*3+L2+2}--
ElseIf J=2
{O*3+L2+1}++
ElseIf J=3
{O*3+L2+2}++
End


Évidemment, tout cela est expliqué par le fait que tu débutes, et c'est normal de faire un premier programme "moisi" (regarde mon Pokémon Topaze :P). Mais maintenant que tu es capable d'écrire des choses cohérentes, il faut apprendre à optimiser ^^

Reprenons les exemples que je t'ai donnés.

Dans le premier, tu calcules à chaque fois O*3+L2 (et tu le recalcules d'ailleurs en dessous). Stocke-le dans une variable plutôt; comme ça:
Code: Select all
{O*3+L2→r1+3}→J
{r1+1}→K
{r1+2}→L

On pourrait faire encore un peu mieux mais ça gênerait la suite du programme. Et j'ai pris "r1" sans vérifier qu'elle était déjà prise.

Dans le deuxième (en oubliant le retour du O*3+L2 :P), tu peux abuser d'hl un peu, surtout dans ce cas.
Ainsi, au lieu d'écrire
Code: Select all
If J=0
...
ElseIf J=1
...
ElseIf J=2
...
ElseIf J=3
...
End

Tu peux écrire
Code: Select all
!If J
...
Else!If -1
...
Else!If -1
...
Else!If -1
...
End

Re: JEU Boxhead en axe

Unread postPosted: 31 Oct 2014, 19:19
by matref
Pas mal, mais pour moi le fait que ça tourne uniquement à 15 MHz est inacceptable :P tu devrais essayer d'optimiser des trucs jusqu'à ce que ça tourne correctement à 6 MHz - et si ça tourne à 6, ton programme le peut bien.

Sinon, franchement, comme premier projet c'est du super boulot :D

EDIT : meh ninja'd

EDIT 2 : c'est pas que kindermoumoute qui l'a fait le tuto Axe, y'a Kindermoumoute, Metallica, nikitouzz et moi.

Re: JEU Boxhead en axe

Unread postPosted: 31 Oct 2014, 19:57
by Plokki
Désolé pour les oublis des auteurs j'ai pas fait gaffe...

Sinon merci pour les optimisations avec exemples à l'appui, je sentais bien qu'il y avait des trucs qui coinçaient mais je voyais pas quoi...
mais je suis un peu coincé (justement !) puisque si je me souviens bien j'utilise toutes les variables disponibles ou presque !
J'aurai également besoin de conseils: C'est bien ou c'est pas bien les fonctions imbriquées ? Existe-t-il une méthode pour afficher des sprites 16*16 sans passer par 4 sprites 8*8 ? quel est le plus intéressant: If .... and ... and ... and ... Ou:
if ...
if ...
if ...
?

Re: JEU Boxhead en axe

Unread postPosted: 31 Oct 2014, 20:26
by Hayleia
Plokki wrote:mais je suis un peu coincé (justement !) puisque si je me souviens bien j'utilise toutes les variables disponibles ou presque !

Tu fais bien de le dire, c'est exactement ce que je voulais dire puis j'ai oublié :P
En fait, tu peux créer tes variables à toi, avec le nom que tu veux. La syntaxe c'est
<pointeur vers zone de RAM "libre">→°<nom de ta variable>
Par exemple, si tu veux une variable qui s'appelle "VitesseX", et si tu as deux octets de libres à L5+4, tu peux faire L5+4→°VitesseX, et à partir de là, tu peux faire 1→VitesseX, ou VitesseX++, etc ;)
Même, si tu n'utilises pas A (ou au moins si tu ne l'utilises pas dans la portion de code où tu utilises VitesseX), tu peux faire °A→°VitesseX ;)
Simples restrictions: le nom de ta variable doit prendre moins de 13 caractères et doit commencer par une majuscule. Après, ça peut être bien d'éviter les noms de variables comme Y1 ou VitesseY1 (en supposant qu'il y aie un VitesseY2). Ça marchera sans problèmes, en fait, mais si tu demandes de l'aide à quelqu'un qui utilise TokenIDE/tok8x/SourceCoder, ça va beaucoup l'ennuyer :P

Plokki wrote:C'est bien ou c'est pas bien les fonctions imbriquées ?

Connais pas les fonctions en Axe :P
Les routines, tu les appelles quand tu en as besoin, de la manière la plus optimisée possible, c'est tout ;)
Si tu dois faire un appel imbriqué, vas-y. Mais perso, j'en fais pas souvent (déjà je fais pas souvent des routines :P).

Plokki wrote: Existe-t-il une méthode pour afficher des sprites 16*16 sans passer par 4 sprites 8*8 ?

Tu peux utilise Bitmap mais je crois que c'est plus lent.
Sinon, tu peux écrire ta routine 16x16 en assembleur et l'utiliser dans ton programme Axe, aucun souci. On a fait pire avec Matref dans Smash Bros :P

Plokki wrote:quel est le plus intéressant: If .... and ... and ... and ... Ou:
if ...
if ...
if ...
?

Je crois qu'Axe transforme tout seul une suite de and en suite de If. En tout cas, quand j'avais essayé de transformer une suite de and en suite de If dans un de mes programmes (toujours Smash Bros en fait), sa taille n'avait pas changé d'un octet. Ou c'est peut-être parce que je compilais en mode vitesse et pas en mode espace, je sais pas.

Re: JEU Boxhead en axe

Unread postPosted: 31 Oct 2014, 20:58
by Clément.7
Hayleia -> Je pense que quand il parle des fonctions il veut dire les trucs comme ça :

Code: Select all
Aff();

Lbl Aff
Disp "Salut !"


Plokki, tu me donnes envie de recréer un RPG sur 83+.
Grâce à toi je vais me remettre au compilateur Ace Script j'étais démotivé mais quand je vois tous les nouveaux qui font des prog géniaux je me dis que ça serait bien que moi aussi je me remette à la programmation sur 83+.
Merci beaucoup (même si c'était pas intentionnel de ta part :D)

Re: JEU Boxhead en axe

Unread postPosted: 01 Nov 2014, 11:28
by Hayleia
Clément.7 wrote:Hayleia -> Je pense que quand il parle des fonctions il veut dire les trucs comme ça :

J'ai bien compris, mais ça, ça s'appelle une routine, et c'est pourquoi après mon "connais pas les fonctions", j'ai parlé des routines.

Re: JEU Boxhead en axe

Unread postPosted: 01 Nov 2014, 13:34
by Clément.7
Oups désolé j'avais pas vu :rouge: :gene: :?