540

Voilà comment s'affiche la map avec memcpy:
bug_map.gif

Au lieu de:
screen_4.gif
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

541

Ah oui j'avais pas vu que tu mélangeais "unsigned short" et "unsigned char" picol

D'ailleurs c'est un peu normal qu'un memcpy ne marche pas avec ça triroll

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

542

lol, j'avais pas vu.
J'ai dû modifié ça sans m'en rendre compte. mur
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

543

Pollux
(./330) :Je pense que c'est bien plus efficace de rajouter une version rol/ror, quitte effectivement à réenrouler la boucle (un facteur 2 ou 3 aurait un effet relativement faible sur le fps comparé à rol/ror, mais ça peut être intéressant de laisser déroulé si c'est vraiment *la* routine critique), de toute façon le gain sera gigantesque, et en plus on gagnera sur le plan de la régularité (moins de saccades puisque le pire des cas sera traité plus efficacement)
J'ai enfin eu le temps de faire un test et je ne gagne que 8% de vitesse en plus neutral
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

544

Oui, fallait pas non plus s'attendre à des miracles du style x2 ou x3 roll

Ca devrait être un peu plus de 8% normalement (10-15% en moyenne). En tout cas le rapport gain en vitesse/taille en mémoire est bien plus élevé que pour un simple déroulage, donc tu peux réenrouler les boucles si tu préfères gagner de la mémoire.

Bon je viens de calculer, pour un groupe de 16 pixels noir & blanc avec rol : 48+2n cycles. Si tu passes à rol/ror, n passe de 15 dans le pire des cas à 9, soit un gain de presque 25% : et comme c les frames qui sont les plus lents à afficher qui vont limiter le fps dans le cas de geogeo (il _faut_ que la routine puisse tourner à 90 fps tout le temps sinon ça coince), ça peut être intéressant.

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

545

Pollux :
Oui, fallait pas non plus s'attendre à des miracles du style x2 ou x3 roll
Non, mais quand même, ce n'est pas tellement "gigantesque".
Ca devrait être un peu plus de 8% normalement (10-15% en moyenne). En tout cas le rapport gain en vitesse/taille en mémoire est bien plus élevé que pour un simple déroulage, donc tu peux réenrouler les boucles si tu préfères gagner de la mémoire.
En réenroulant, je perds les 8%, donc la routine devient à peu près aussi rapide que l'ancienne (à peine plus rapide), et elle prend quand même plus de place. Le seul avantage, c'est que le fps est plus régulier.
Bon je viens de calculer, pour un groupe de 16 pixels noir & blanc avec rol : 48+2n cycles. Si tu passes à rol/ror, n passe de 15 dans le pire des cas à 9, soit un gain de presque 25% : et comme c les frames qui sont les plus lents à afficher qui vont limiter le fps dans le cas de geogeo (il _faut_ que la routine puisse tourner à 90 fps tout le temps sinon ça coince), ça peut être intéressant.
Comment tu trouves 25% ?
J'ai du mal à calculer théoriquement le gain, ça m'embrouille le cerveau. Si on prend que les pires cas, on se retrouve avec un gain de 100*(1-(48+2*9)/(48+2*15)) = 15%, mais en fait, pour des shifts de 0 à 9, la vitesse est la même que dans l'ancienne routine, et pour les autres shifts (de 10 à 15), ça va de plus en plus vite. Ça complique le calcul, je trouve non ?
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

546

Bon, j'ai fait un calcul, et je trouve un gain théorique de 12-13%.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

547

12-13% = 1/2 x 25%, non?

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

548

Oui, pourquoi ?
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

549

Donc 25% dans le pire des cas et 10-15% en moyenne, comme je l'avais dit, non?

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

550

Ah OK, au temps pour moi, j'avais mal compris ce que tu disais.
Enfin, ce qui compte c'est le gain moyen.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

551

Voilà je voudrais un petit conseil au niveau de l'algorithme de collisions avec les blocs. J'ai enfin réussit à en trouvant un sans bugs et parfait mais je le trouve assez indigeste et un peu barbare.

En fait j'ai définie 8 points d'impacte sur chaque bille suivant ça taille j'obteint un certains nombres de blocs que la bille à touché, je les tries de tel sorte de ne pas avoir 2 ou plusieurs fois le même bloc. Un fois ça de fait j'obtient un liste avec tout les blocs que la bille à touché, si dans cette liste il y a un bloc en fonction de la collision j'iverse cos ou sin et si la brique est incassable j'effectue une boucle jusqu'à ce quelle ne soit plus en collision avec le bloc... Je procéde un peu de la même façon pour 2 brqiues et pour plusieurs briques la bille part dans le sens opposé et ça position est mise à jour.

//Collisions avec les bricks
void CollideWidthBlock (void)
{
	short block_x[8], block_y[8];
	unsigned char block;
	
	short sort_n=0;
	BOOL sort_flag=FALSE;
	short block_sortx[8];
	short block_sorty[8];
	short block_sortdir[8];
	
	BOOL flag;
	
	short save_speed;
	
	BOOL ReDrawMap=FALSE;

	for (int i=0; i<nbrBille; i++)
	{
		if (Bille [i]->ypos<=BLOCKS_ENDZONE)
		{
			for (int j=0; j<8; j++)
			{
				block_x [j]=abs ((Bille [i]->xpos+Bille [i]->IMPACT_x [j])-BLOCK_SIZE2_X)>>4;
				block_y [j]=abs ((Bille [i]->ypos+Bille [i]->IMPACT_y [j])-BLOCK_SIZE2_Y)/7;
				
				//Dépassement de capacités
				if (block_y [j]>17) block_y [j]=17;
			}	
				
			//Trier blocks
			sort_n=0;
				
			//Parcours itération
			for (int j=0; j<8; j++)
			{
				block=LevelMap [block_y[j]][block_x[j]];
				
				//Si block égale à 0 quitter trie
				if ((block&0x0F)==0) sort_flag=FALSE;
				else
				{
					//Parcours listes trie
					sort_flag=TRUE;
					for (int k=0; k<sort_n; k++)
					{
						sort_flag=TRUE;
					
						//Si block égale à liste de trie
						if ((block_x [j]==block_sortx [k]) && (block_y [j]==block_sorty [k]))
						{
							sort_flag=FALSE;
							break;
						}
					}
				
					//Si trie à effectuer
					if (sort_flag==TRUE)
					{
						block_sortx [sort_n]=block_x[j];
						block_sorty [sort_n]=block_y[j];
					
						//Direction de destruction de la brique (0=y, 1=x)
						block_sortdir [sort_n++]=j;
					}
				}
			}
			
			//Effectuer collisions
			for (int j=0; j<sort_n; j++)
			{
				//Extraction block
				block=LevelMap [block_sorty[j]][block_sortx[j]];
				
				//Blocks en acier (animations ou double destructions)
				//Acier gris
				if ((block&0x8F)==0x06) {CREATE_ANIM_BLOCK (block_sortx[j],block_sorty[j],0x06); LevelMap [block_sorty[j]][block_sortx[j]] |= 0x80;}
				//Spécial en 2
				else if ((block&0x8F)==0x0B) {CREATE_ANIM_BLOCK (block_sortx[j],block_sorty[j],0x0B); LevelMap [block_sorty[j]][block_sortx[j]] |= 0x80;}
				//Acier jaune incassable
				else if ((block&0x8F)==0x08) CREATE_ANIM_BLOCK (block_sortx[j],block_sorty[j],0x08);
				
				//Sinon détruire
				else
				{
					ReDrawMap=TRUE;
					LevelMap [block_sorty[j]][block_sortx[j]]=0;
				}
			}
			
			//Collision avec une brique
			if (sort_n==1)
			{
				//Changement de directions
				if (block_sortdir [0]<=3) AngleBille (i, 255-Bille [i]->rad);
				else AngleBille (i, 128-Bille [i]->rad);
				
				//Brique non cassé
				if (LevelMap [block_sorty[0]][block_sortx[0]]!=0)
				{
					save_speed=Bille [i]->speed_value;
					Bille [i]->speed_value=1;
					
					BilleNoCollideWithBlock_single:
					flag=FALSE;
					
					for (int j=0; j<8; j++)
					{
						block_x [j]=abs ((Bille [i]->xpos+Bille [i]->IMPACT_x [j])-BLOCK_SIZE2_X)>>4;
						block_y [j]=abs ((Bille [i]->ypos+Bille [i]->IMPACT_y [j])-BLOCK_SIZE2_Y)/7;
				
						//Dépassement de capacités
						if (block_y [j]>17) block_y [j]=17;
						
						if ((block_x [j]==block_sortx[0]) && (block_y [j]==block_sorty[0])) 
							{flag=TRUE; break;}
					}
					
					//Si toujours dans brique
					if (flag==TRUE)
					{
						UpdateBillePos (i);
						goto BilleNoCollideWithBlock_single;
					}
					
					Bille [i]->speed_value=save_speed;	
				}
			}
			//2 briques
			else if (sort_n==2)
			{
				//Changement de directions
				if (block_sortdir [0]<=3) AngleBille (i, 255-Bille [i]->rad);
				else AngleBille (i, 128-Bille [i]->rad);
				
				//Brique non cassé
				if ((LevelMap [block_sorty[0]][block_sortx[0]]!=0) || ((LevelMap [block_sorty[1]][block_sortx[1]]!=0)))
				{
					save_speed=Bille [i]->speed_value;
					Bille [i]->speed_value=1;
					
					BilleNoCollideWithBlock_mult2:
					flag=FALSE;
					
					for (int j=0; j<8; j++)
					{
						block_x [j]=abs ((Bille [i]->xpos+Bille [i]->IMPACT_x [j])-BLOCK_SIZE2_X)>>4;
						block_y [j]=abs ((Bille [i]->ypos+Bille [i]->IMPACT_y [j])-BLOCK_SIZE2_Y)/7;
				
						//Dépassement de capacités
						if (block_y [j]>17) block_y [j]=17;
						
						if (((block_x [j]==block_sortx[0]) && (block_y [j]==block_sorty[0])) || ((block_x [j]==block_sortx[1]) && (block_y [j]==block_sorty[1]))) 
							{flag=TRUE; break;}
					}
					
					//Si toujours dans briques
					if (flag==TRUE)
					{
						UpdateBillePos (i);
						goto BilleNoCollideWithBlock_mult2;
					}
					
					Bille [i]->speed_value=save_speed;	
				}
			}
			//Si plusieurs briques
			else if (sort_n!=0)
			{
				AngleBille (i, 128+Bille [i]->rad);
				UpdateBillePos (i);				
			}
		}
	}
	
	//Si redessiner niveau
	if (ReDrawMap==TRUE) MAP_ReDrawMap ();
}
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

552

CollideWidthBlock -> CollideWithBlock plutot non ? (à moins que tu veuille vraiment une fonction "Collision Largeur Block" mais je comprends pas trop le sens)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

553

Optimisation :

-	if (ReDrawMap==TRUE) MAP_ReDrawMap ();
+	if (ReDrawMap) MAP_ReDrawMap ();

grin

[EDIT : Les tabulations sous IE c'est pas encore ça ...]
avatar
I'm on a boat motherfucker, don't you ever forget

554

Ah oui désolé je vais corriger ça. smile
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

555

moumou> ce genre de chose n'est pas directement optimisé par le compilateur? Si ce n'est pas le cas je vais modifier tout ça.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

556

Sisi c'est optimisé par le compilateur, mais pas par tes petits doigts fatigués ;p
avatar
I'm on a boat motherfucker, don't you ever forget

557

Et à vrai dire ce n'est pas du tout le genre d'optimisation triviale à faire (je ne sais pas si GCC le fait dans les cas un peu compliqués, et en tout cas je suis certain qu'il ne le fait pas si la valeur en question a été renvoyée par une fonction). Je te recommanderais très vivement de remplacer tous tes ==TRUE par des !=FALSE ou bien, pour faire plaisir à tes petits doigts fatigués, par rien du tout.

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

558

OK, perso j'ai laissé ça car c'est un peu plus lisible.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

559

Donc je parie que pour faire if (flag==FALSE), if (!flag) est bien plus rapide?
Mais dans mon code vous ne voyez pas d'autres optimisation, désolé de vous présenter ça de façon assez brutale.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

560

attendez vous allez pas me dire qu'un compilo sait pas optimiser: if (a==TRUE) ??

561

geogeo> non Le problème c'est pas de faire des comparaisons, c'est de faire des comparaisons avec TRUE (=1) plutôt qu'avec FALSE (=0). Une comparaison avec FALSE, c'est un simple 'tst.w' (qu'on peut même souvent supprimer), une comparaison avec TRUE, c'est un 'cmp.w #1' bcp plus gourmand en cycles et en mémoire. !x est absolument équivalent à x==FALSE, mais c'est plus rapide que x!=TRUE. Le seul avantage de !x par rapport à x==FALSE est le fait que c'est plus court, mais si tu trouves ça plus lisible avec un FALSE tu peux le laisser tel quel.

Jackos> Non, ce n'est pas évident à gérer. Il faut que le compilo puisse être absolument sûr que a ne puisse prendre que la valeur 0 ou la valeur 1. Ca peut être facilement déterminer si 'a' a été affecté du résultat d'un test juste avant. Mais si on est dans une boucle et que celle-ci peut modifier 'a', il faut faire plein de tests pour s'assurer que a vaut toujours 0 ou 1.

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

562

OK j'ai compris, je changerais donc cette habitude.

Voilà une démo très abouti d'Arkanoid Revenge of DOH, voici ce qui est disponible:

-Moteur graphique Background
-Moteur graphique briques.
-Moteur de gestion des billes en taille, vitesse, trajectoire.
-Collision avec les briques statique du jeu, donc pas les briques spécial qui bouge pour l'instant.
-Collision avec plusieurs billes.
-Collision avec la raquette (collision peu abouti est très buggée).
-Briques spécial en acier géré.
-Briques Move géré.
-Briques TIME géré (réapparaisse au bout d'un certain temps).
-Briques incassable.
-Animation de la raquette.

Tout ça est paramètrable à ça guise. Le jeu acceptera de tourner avec 10 billes max et 8 raquettes, mais avec tout ça le nombres deframes est peu concluant. Le jeu pour l'instant tourne max à 80 fps et min à 70 fps.
Certaines animations sont déréglé à cause de tests que j'effectue sur VTI...

Pour l'instant le jeu n'est compatiblke que pour les TI92+ et V200.

Voilà c'est un tout mais s'est déjà pas mal. grin

Pour télécharger la démo:
http://perso.wanadoo.fr/tisofts/arkanoid/arkanoid3.zip

Les sources du jeu sont disponible, si vous voulez y jeter un coup d'oeil. (Bonne chance grin)
C'est ici:
[url]http://perso.wanadoo.fr/tisofts/arkanoid/arkanoid 7.12.03.zip[/url]

Il me faudrait des personnes pour tester et me faire un rapports sur les défauts est qualitées du jeu, certe y a pas grand choses mais y a quand même des trucs à évaluer.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

563

Arkanoid avance, plus aucun bugs, j'ai enfin créer la gestion de raquettes....

Il me faudrait quelqu'un qui puisse m'aider à réaliser les MAPS, elles ce présente sous forme de matrice de 13x18 briques, elles ce trouverons dans un fichier externe, le première octet indiquera sur 4 bits le décors de fond et les 4 bits restant l'ennemis principal du niveau. Un deuxième octet réservé sera utilisé pour des effets de jeu...

Que pensez-vous du jeu pour l'instant?
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

564

Ça peut devenir très sympa si tu sors un peu du casse brique "de base", puisque c'est bien parti mais qu'il n'y a rien d'original pour le moment.

Heu sinon pour les collisions c'est pas encore ça :
Arkanoid.gif
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

565

Ca je sais et s'est fait exprès, réellement. Je prépare des effets. En fait les fausses collisions que tu vois sont du à une gestion des 2 joueurs en même temps, soit une attaque vers le bas ou le haut. En tout cas cette collision deviendera impossible car quand la bille sort de cette zone le jeu ce termine.
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

566

Il y a un peu d'originalité car certaines briques bouge, tu devinera facilement ses briques sur le screen et certaines briques réapparaissent au bout de 20 secondes, encore facile à deviner sur l'écran.

Les bonus vont être implanté ainsi que les monstres... tout ça donnera plus d'originalité au jeu.

Ah ouai pour mon post d'avant, j'ai corrigé les bugs de collisions et j'ai finit une gestion parfaite des raquettes par contre j'ai décidé que les billes auront une taille fixe.

http://perso.wanadoo.fr/tisofts/arkanoid/arkanoid4.zip

Au fait toutes critiques au niveau de l'écriture du code sont les bien venu, ça ne peux qu'améliorer mon niveau. smile
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

567

N'oublie pas d'indiquer où est la raquette quand elle n'est pas visible à l'écran
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

568

J'y pense. De plus que pensez-vous si j'ajoute une zone noir de 240x50 pixels tout en haut et bien sûr que je ne scrolle pas cette zone et que ans celle-ci je mette les scores, indication ou ce trouve la raquette principal...?

Je viens de mettre à jour le pack car j'ai ajouté l'intro d'orage studio, dit moi ce que vous en pensez!
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.

569

L'indication de la position de la raquette, il vaut mieux la mettre en bas.
Le score, je trouve ça complètement inutile.
Éventuellement, je serais pour l'afficher lorsque le jeu est en mode pause.
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

570

OK tu a raison, ça semble la meilleur solution car l'écran de la TI est déjà trop petit en hauteur donc pas la peine d'en prendre encore plus.

Pour l'indicateur il faut que je réflechisse car en bas on verra pas grand chose s'il est au dessus des briques...
avatar
la Nature nous montre seulement la queue du lion. Mais je suis certain que le lion a qui elle appartient pense qu'il ne peut pas se révéler en une fois en raison de son immense taille.

- Fondateur de Ti-Gen -: http://www.tigen.org

- Membre du Groupe Orage Studio -: http://oragestudio.free.fr/

- Mon site perso -: http://tisofts.free.fr

Projets TI68K en cours:
GFA-Basic = http://www.tigen.org/gfabasic
Arkanoid.
PolySnd 3.0.