[Thomson] TO8 (puis MO6) : nouveau jeu Demineur Xtreme

Cette catégorie traite de développements récents pour nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Papy.G, fneck, Carl

Neotenien
Messages : 354
Inscription : 23 oct. 2020 19:15
Localisation : Le Mans
Contact :

[Thomson] TO8 (puis MO6) : nouveau jeu Demineur Xtreme

Message par Neotenien »

Bonjour à tous.

"Mission FauneX : Démineur Xtreme" est un jeu de démineur écrit exclusivement pout les Thomson TO8 (et prochainement sur MO6), dont l'idée est venu en mai 2022. Il propose 16 niveaux dont les scores (temps mis) sont sauvegardables sur disquettes. Il se joue à la souris ou au clavier. A l'heure actuelle, vous pouvez vous exercer au mode Challenge, avant que le mode "aventure" ne soit implanté (parcours de 8 niveaux).

Le jeu a désormais une fiche sur "albatros concept" en cliquant ICI. Vous pouvez y télécharger la dernière version en format ZIP (fichier disquette au format FD).

MAJ du 04/11/2022 :
  1. L'ensemble du logiciel se gère désormais entièrement à la souris+ tortue, par des menus
  2. Ajout d'un menu principal
  3. Les niveaux à grosses cases int un graphisme plus fin et beau (le même que pour le choix du niveau)
MAJ du 30/10/2022 :
  1. Internationalisation (Français, Anglais (Pour Peter), Allemand, Espagnol et Italien, par clic (gauche ou droite) sur drapeau (le pointeur de souris change de fome quand on passe sur les drapeaux). Pour les langues autres que français et anglais j'ai dû utiliser Google Translator (mn espagnol étant assez faible, quant aux 2 autres langues, je ne les connais pas)... Des retours sur les traductions sont les bienvenues.
  2. Réorganisation des chaines de caractères (on les lit dans les DATA du basic)
  3. Ajout des gros caractères de chiffres (qui seront employée pour les niveaux à grosses cases au lieu de cette affreux "attrb 1,1") et sont visibles dans le menu de choix du niveau)
  4. 4 entrées de menu pour chaque niveau (dont 1 servant à réinitialiser les records)
  5. création d'un petit module de boite d'alerte apparaissant, pour le moment, quand vous avez perdu une partie et quand on vous demande de confirmer la réinitialisation des scores.
MAJ du 15/10/2022 :
  1. Au début du jeu, on fournit un pseudo (au moins 3 lettres et aucune des 3 premières lettres ne doit être un espace)
  2. Une entrée "Quitter" dans le menu des niveaux
  3. Après le choix du niveau, on a cette fois un sous-menu, permettant de jouer une nouvelle partie, voir le hall of fame du niveau, réinitialiser score du niveau (pas encore actif), changer de niveau
  4. Pendant le jeu, si on perd une partie : 1/ L'ensemble des mines non trouvées s'affichent 2/ En appoyant sur "r" ou "R", on peut rejouer la même partie (n'apparait que si vous perdez la partie). Ca peut servir pour les niveaux hyper difficiles (8, 9, E et F), il suffit de mémoriser avant les zones vides.
  5. Il y a un Hall of Fame de chaque niveau (basé sur mes meilleurs scores auquels j'ai ajouté 10% pour le best de chaque niveau et dont chaque score suivant est calculé en ajoutant 20%... Normalement, tout le monde devrait être capable d'entrer dans ce hall of fame pour chaque niveau, y compris en ne jouant qu'au clavier)
  6. Si vous gagnez une partie ET que vous faites parties des 10 meilleurs scores, le tableau de ces 10 s'affiche en surlignant votre score
  7. Le jeu est prévu pour être international! Les variables Basic de texte ont été initialisé à partir de la lugne 5000 du Basic. The game is intend to be international, all the String are Var which are initied from line 5000 in Basic, I didn't forget you Peter...
MAJ du 7/07/2022 : J'ajoute la dernière version du jeu, le fichier datant d'aujourd'hui avec des petites choses en plus :
  1. 1 image de fond par niveau (grâce à "Utopic" de Sam Devulder)
  2. Le jeu peut aussi se jouer au clavier, quand la souris n'est pas présente ou quand on met le pointeur en X=0 ou Y=0
  3. On peut mettre le jeu en Pause avec la touche "p" ou "P" (et on voit l'image de fond apparaitre). Retour au jeu uniquement avec la même touche P
  4. On peut quitter le jeu en appuyant sur la touche "q" ou "Q"
  5. un bruitage pour chaque action (qui est très basique pour le momebt)
J'attend vos retours.
Cette version n'est pas multilinguistique, il s'agit juste d'améliorations de la version précédente.
------------------------------------------

J'avais commencé par écrire ce jeu e Basic puis en assembleur sur les parties lentes (création de grille et découverte en cascade) dans lesquelle on a un gain de vitesse d'au moins x30 comparée à la même chose en Basic.



Pour y jouer, sur TO8/TO9, faites B (auto.bat), puis choisissez votre langue à la souris (drapeaux). Par la suite, un système de menu en "cascade" vous permet de choisir les options.

Il y aura également une version MO6 (le code assembleur n'est pas compliqué à changer, ce sont juste quelques entrées de RAM à changer).
Dernière modification par Neotenien le 20 nov. 2022 22:27, modifié 11 fois.
Daniel
Messages : 17288
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: [Thomson] TO8 (puis MO6) : nouveau jeu Demineur Xtreme

Message par Daniel »

En BASIC, quand on fait un PRINT sur la dernière ligne de l'écran, il faut supprimer le retour à la ligne, sinon l'écran scrolle vers le haut.

Code : Tout sélectionner

331 IF GAMESTATUT=1 THEN ATTRB 0,0:LOCATE 0,24 : PRINT"PERDU" : GOTO 350
332 IF NBRESTANT=0 THEN ATTRB 0,0:LOCATE 0,24 : PRINT"GAGNE" : GOTO 350
A remplacer par

Code : Tout sélectionner

331 IF GAMESTATUT=1 THEN ATTRB 0,0:LOCATE 0,24 : PRINT"PERDU"; : GOTO 350
332 IF NBRESTANT=0 THEN ATTRB 0,0:LOCATE 0,24 : PRINT"GAGNE"; : GOTO 350
Daniel
L'obstacle augmente mon ardeur.
Neotenien
Messages : 354
Inscription : 23 oct. 2020 19:15
Localisation : Le Mans
Contact :

Re: [Thomson] TO8 (puis MO6) : nouveau jeu Demineur Xtreme

Message par Neotenien »

Daniel a écrit : 08 juin 2022 20:27 (supp modo: quote inutile)
Oui Daniel (je sais). Cette version n'est pas la version définitive! C'est juste pour tester le jeu. Samuel m'a expliqué comment le Basic gérait les print comparé à PUTC de l'Assembleur. En fat la fin de jeu sera autre dans la version définitive (je le sais pas encore quel sera le scénario, mais déjà faire apparaitre les bombes quand on a cliqué sur l'une d'elles)... Mais pour la version aventure, il y aura toute une partie animation à la fin de chaque étape.

Quoiqu'il en soit j'ai rectifié le tir... Même si cette partie n'est que provisoire...

Par contre ya un bug quand on clique sur la ligne au dessus de la première ligne de la grille, ça considère que ça fait partie de la 1ère ligne, faut que je vois ça... mais bon à part ça, je suis satuisfait du résultat (et que je trouve aussi rapide que Bombwatch d'Atari ST). La partuie Basic s'occupant de ça est ici

Code : Tout sélectionner

630 X=(XMOUS-8*XOFFSET)@(8-8*(carsize0=1)): Y=(YMOUS-8*YOFFSET)@(8-8*(carsize0=1)): IF X>XMAX OR Y>YMAX OR X<0 OR Y<0 THEN 699
où XMOUS et YMOUS donnent la position de la souris, XOFFSET et YOFFSET l'offset (en caractère de 8 bits) de la grille sur les coordonnées 0,0 et carsize0, un flag indiquan si on est en mode taille double (=1) ou taille simple (=0)
Avatar de l’utilisateur
Silou78
Messages : 382
Inscription : 11 févr. 2017 14:54
Localisation : Yvelines (78)

Re: [Thomson] TO8 (puis MO6) : nouveau jeu Demineur Xtreme

Message par Silou78 »

Tout simplement car [s]le modulo[/s] la division entière par 8 sur l'intervalle [-7 ; -1] donne 0 comme résultat. Résultat identique sur l'intervalle [0 ; 7].
Il vaut mieux tester les limites de la grille sur les coordonnées de la souris non-converties.
D'ailleurs il doit y avoir le même soucis avec la colonne de gauche juste devant la grille.

Edit suite au poste de sam : modulo remplacé par division entière
Dernière modification par Silou78 le 09 juin 2022 23:04, modifié 2 fois.
Sylvain
__sam__
Messages : 7909
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson] TO8 (puis MO6) : nouveau jeu Demineur Xtreme

Message par __sam__ »

Je pense que tu veux parler de la division entière (symbole @) et pas du modulo. Le modulo ne donne pas 0 pour les nombres -7..-1 et 1..7. Par contre divisés-entièrement par 8, ces nombrent donnent tous 0 (il y a 0 fois 8 dans ces nombres). Bref "@" arrondit vers 0, là où il faudrait arrondir vers -infini. La solution est de rester dans le domaine>=0, et de revenir dans les valeurs éventuellement négatives à la fin comme dans cette version corrigée:

Code : Tout sélectionner

630 X=XMOUS@(8-8*(carsize0=1))-XOFFSET: Y=YMOUS@(8-8*(carsize0=1))-YOFFSET: IF X>XMAX OR Y>YMAX OR X<0 OR Y<0 THEN 699
(et en cadeau Bonux(tm) c'est plus rapide car on s'épargne deux multiplications)
Dernière modification par __sam__ le 09 juin 2022 23:28, modifié 1 fois.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Avatar de l’utilisateur
Silou78
Messages : 382
Inscription : 11 févr. 2017 14:54
Localisation : Yvelines (78)

Re: [Thomson] TO8 (puis MO6) : nouveau jeu Demineur Xtreme

Message par Silou78 »

Oui, je voulais dire division entière (je prononce toujours l'un en pensant à l'autre, lol !) :mrgreen:
Sylvain
__sam__
Messages : 7909
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson] TO8 (puis MO6) : nouveau jeu Demineur Xtreme

Message par __sam__ »

Petite remarque d'optimisation en basic

Code : Tout sélectionner

X<0 OR Y<0
peut être réécrit en

Code : Tout sélectionner

(X OR Y)<0
qui est plus rapide à évaluer. Le OR bit à bit fait un "ou" logique du bit de signe, donc (X OR Y) est négatif si et seulement si l'un des deux est négatif. C'est une particularité du codage binaire pour les nombres signés dont on peut profiter.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Neotenien
Messages : 354
Inscription : 23 oct. 2020 19:15
Localisation : Le Mans
Contact :

Re: [Thomson] TO8 (puis MO6) : nouveau jeu Demineur Xtreme

Message par Neotenien »

Silou78 a écrit : 09 juin 2022 21:35 Tout simplement car [s]le modulo[/s] la division entière par 8 sur l'intervalle [-7 ; -1] donne 0 comme résultat. Résultat identique sur l'intervalle [0 ; 7].
Il vaut mieux tester les limites de la grille sur les coordonnées de la souris non-converties.
D'ailleurs il doit y avoir le même soucis avec la colonne de gauche juste devant la grille.

Edit suite au poste de sam : modulo remplacé par division entière
Oui bien vu!! En fait je n'ai pas fait l'effort de chercher la réponse.

Oui ikl y a le même problème à gauche je crois l'avoir écrit (mais pas sur ce forum). Je crois que le mieux est effectivement de faire un test direct entre XMOUS et 8 fois XOFFSET... et à le faire avant pour éviter le calcul de X et Y d'ailleurs.
Neotenien
Messages : 354
Inscription : 23 oct. 2020 19:15
Localisation : Le Mans
Contact :

Re: [Thomson] TO8 (puis MO6) : nouveau jeu Demineur Xtreme

Message par Neotenien »

__sam__ a écrit : 09 juin 2022 23:31 Petite remarque d'optimisation en basic

Code : Tout sélectionner

X<0 OR Y<0
peut être réécrit en

Code : Tout sélectionner

(X OR Y)<0
qui est plus rapide à évaluer. Le OR bit à bit fait un "ou" logique du bit de signe, donc (X OR Y) est négatif si et seulement si l'un des deux est négatif. C'est une particularité du codage binaire pour les nombres signés dont on peut profiter.
Suis impressionné. Merci Samuel.

Sauf que là, au vu du problème signalé, je vais êre opbligé de faire autrement (comparé XMOUS avec 8×Xoffset et Ymous avec YOffset... donc ça va être un truc du genre :

((XMOUS-8*Xoffset) OR (YMOUS-8*YOFFSET))<0

et appliqué avant le calcul de X et Y.
Neotenien
Messages : 354
Inscription : 23 oct. 2020 19:15
Localisation : Le Mans
Contact :

Re: [Thomson] TO8 (puis MO6) : nouveau jeu Demineur Xtreme

Message par Neotenien »

__sam__ a écrit : 09 juin 2022 21:55 Je pense que tu veux parler de la division entière (symbole @) et pas du modulo. Le modulo ne donne pas 0 pour les nombres -7..-1 et 1..7. Par contre divisés-entièrement par 8, ces nombrent donnent tous 0 (il y a 0 fois 8 dans ces nombres). Bref "@" arrondit vers 0, là où il faudrait arrondir vers -infini. La solution est de rester dans le domaine>=0, et de revenir dans les valeurs éventuellement négatives à la fin comme dans cette version corrigée:

Code : Tout sélectionner

630 X=XMOUS@(8-8*(carsize0=1))-XOFFSET: Y=YMOUS@(8-8*(carsize0=1))-YOFFSET: IF X>XMAX OR Y>YMAX OR X<0 OR Y<0 THEN 699
(et en cadeau Bonux(tm) c'est plus rapide car on s'épargne deux multiplications)
Hello Samuel

Désolé mais dans le cadre de mon logiciel, ta formule ne peut pas marcher puisque'"ici les Offset sont toujours mudulo 8 (c'est à dire des caractères de tailles normale). C'est un choix que j'ai fait qui permet de placer la grille modulo 8.

Exemple, si on a un offfset de 3 (soit 24 pxl), et qu'on a la case 0 en taille double, celle ci sera positionnée entre 24 et 39 (en X mettons). Si on suit ta formule, que la souris clique en 26, on divise par 16 (8+8) et le résulytat entier sera donc 1. Si on enlève le offset qui est à 3, X vaudra -2... tu vois bien que ce n'est pas possible.

Le mieux est de créer une variable temporaire TMP=(1-(cassize0=1))
puis de faire X=Xmous@(8*TMP) - XOFFSET@TMP

Sachant qu'en Basic, les valeurs booléennes sont de 0 (false) et -1 (true) contrairement aux &utres langages (C, Pascal, PHP etcà ou le true vaut 1.
__sam__
Messages : 7909
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: [Thomson] TO8 (puis MO6) : nouveau jeu Demineur Xtreme

Message par __sam__ »

Ah l'offset n'est pas automatiquement doublé. Ca m'aurait paru logique, mais bon, ok alors. Cependant ta formule est trop compliquée à mon gout. Elle est équivalente à

Code : Tout sélectionner

X=(Xmous@8 - XOFFSET)@TMP
avec TMP =1 ou 2 qui peut se simplifier pas mal lorsque TMP=1.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Neotenien
Messages : 354
Inscription : 23 oct. 2020 19:15
Localisation : Le Mans
Contact :

Re: [Thomson] TO8 (puis MO6) : nouveau jeu Demineur Xtreme

Message par Neotenien »

Bonjour

Je vous livre la dernière version 02b corrigeant les bugs cités (plus de retour à la ligne pour "gagné/perdu", prise en compte du drapeau dans la cascade et pas d'action sur clic bord haut ou gauche), rajoutant le chronomètre (là c'est pour le mode challenge)
Pièces jointes
MineSweeper_to8-FD_02b.zip
(4.98 Kio) Téléchargé 59 fois
Avatar de l’utilisateur
jonesypeter
Messages : 33
Inscription : 08 mai 2021 15:33
Localisation : West Sussex, Great Britain

Re: [Thomson] TO8 (puis MO6) : nouveau jeu Demineur Xtreme

Message par jonesypeter »

Merci pour cela. Puis-je demander si cette version contient la traduction en anglais ? Merci Pierre Traduit via Google
Site Web et forum My Sinclair ZX Spectrum

J'utilise DeepL et Google Traduction
Neotenien
Messages : 354
Inscription : 23 oct. 2020 19:15
Localisation : Le Mans
Contact :

Re: [Thomson] TO8 (puis MO6) : nouveau jeu Demineur Xtreme

Message par Neotenien »

jonesypeter a écrit : 07 juil. 2022 10:19 (supp modo: quote inutile)
Hello Pierre

To answer to your question, not yet... I provide today (addentum in 1st message of this subject) last number 2D version (2022-07-07) of this game where all features of this games are now available.
It's not yet the multilanguage game but it will come soon. I have to manage all BASIC fnction for that.

Here is a video in action of this last release (sorry it's in French)


I'll also put in next version (number 3) the save function (with hall of fame) for challenges modus.

Best regards and have fun.
acdan
Messages : 56
Inscription : 14 avr. 2022 12:39

Re: [Thomson] TO8 (puis MO6) : nouveau jeu Demineur Xtreme

Message par acdan »

Bravo pour le boulot!
Répondre