Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.
Menu
Calculatrices
Graph 35 à 100
Graph 25+Pro/25+E/25+E II
Graph 35+USB/75(+E)/85/95 SD
Graph 100(+)
Classpad 300/330(+)
fx-CG 10/20 (Prizm)
Classpad 400(+E)
Graph 90+E
fx-92+ SC
Liens
¤ Transférer un programme sur
sa calculatrice

¤ Vous cherchez une fonction ?
Jeux >> Graph 35+USB/75(+E)/85/95 SD >> Direction/Tir >> Crossing ANT
Crossing ANT
Version : 1.0 Taille : 5280 octets Ajouté le : 2016-05-05 16:01 Modifié le : 2016-10-03 00:20
Auteur et posteur :
Cakeisalie5Hors ligneAncien administrateurPoints: 1896 Défis: 11 Message
Planète Casio - Jeu Casio de direction ou tir - Crossing ANT - cakeisalie5 - Calculatrices
Nombre de visites sur cette page : 5474
Score au progrank : 42
Note actuelle : 7/10 noté 2 fois
Vous devez être connecté(e) pour noter (inscription).
899 téléchargements | Voir les Tests (1)

Ce programme est sous licence GPL 3.0.



Ce programme a participé à l'édition n°19 des Casio Programming Contest.
Pour plus d'informations sur cet événement, cliquez ici.
Votre calculatrice doit posséder les chaines de caractères (Str) et Menu pour utiliser ce programme. Si vous avez une Graph 85 (SD), mettez-la à jour.
Description :

A FINI 4EME SUR 12
LORS DE LA 19ÈME ÉDITION DES 7 DAYS CPC (DANS SA VERSION 1.0)
VERSION ACTUELLE : 1.0


Téléchargements

- Premier fichier : la version 1.0 ayant participé au concours, faite par moi-même ;
- Second fichier : la version 1.0 arrangée par Kirafi.

Synopsis

Vous êtes un enfant qui s'amuse dans une ruelle et tout à coup, vous voyez une fourmi qui essaie d'atteindre un bonbon un peu plus loin. Seulement, sur le sol, vous voyez une substance que vous savez toxique pour les fourmis, et vous voulez aider celle-ci. Quand tout à coup, vous voyez des cailloux à côté : voilà comment vous allez aider votre petite protégée.

Contrôles

Bien que le tutoriel présent in-game résume assez bien le synopsis ci-dessus, on m'a rapporté qu'il était un peu confus concernant les contrôles. Voici donc une clarification :
- Vous ne contrôlez PAS la fourmi. Tout ce que vous pouvez faire, c'est poser des caillous.
- Vous pouvez poser un caillou à droite, en haut à droite et en bas à droite de la fourmi (la flèche).
- La fourmi ne change de rang que s'il y a un caillou en face d'elle. Au début, elle va tout le temps en bas, puis si elle rencontre un caillou également en bas, elle va en haut jusqu'à ce qu'elle croise un obstacle en haut.
- Si la dernière fois qu'il a fallu qu'elle contourne un obstacle en face d'elle, elle est allée en haut, elle ira en haut par défaut la prochaine fois qu'il y aura un obstacle en face. Idem pour en bas. Un obstacle peut être un caillou ou les bords de l'écran, considérés comme des murs.
- Il n'y a pas moyen de reculer (aller vers la gauche). Une fois que vous avez dépassé le bonbon, vous devez retenter (en appuyant sur EXIT puis en relancant ou en attendant que l'écran de défaite s'affiche pour appuyer sur EXE/EXIT).

Pour poser un caillou :
- en haut à droite de la fourmi : flèche du haut, 7, 8 ou 9
- à droite de la fourmi : flèche de droite, 4, 5 ou 6
- en bas à droite de la fourmi : flèche du bas, 1, 2 ou 3

Trouvez la configuration qui vous convient (celle conseillée dans le tutoriel est la 9/6/3).

De plus, comme l'ensemble des jeux que je fais, il est possible de quitter de n'importe où dans les menus/le jeu en appuyant sur EXIT plusieurs fois. Par exemple, appuyer sur EXIT depuis le jeu ramène au menu de sélection de niveau qui quand on appuie sur EXIT ramène au menu principale qui quand on appuie sur EXIT quitte le jeu (et affiche un écran osef où n'importe quelle touche, y compris EXIT du coup, permet de revenir à la liste des programmes).

Notes

Les reproches que je puis faire à ce jeu sont les suivants :
- Le concept est trop simple et à moins d'ajouter des blocs, il devient rapidement limitant, la difficulté se jouant sur le fait de berner le joueur sur le chemin à emprunter (une conséquence importante est d'ailleurs le nombre de niveaux) ;
- Le tutoriel est assez confus et n'explique pas un certain nombre de choses (comme la configuration des touches etc), que j'ai dû expliciter plus haut ;
- C'est du CASIO Basic utilisant des Locate (des caractères dans un tableau de 21*7), donc l'aspect graphique est pas ouf' ;
- La taille et la vitesse du programme peuvent largement être optimisées, j'ai juste dû faire du straight-forward en utilisant des techniques ;
- J'aurais pu rajouter d'autres modes de jeu/d'autres blocs/quelques trucs utilisant le concept de base en s'en écartant, mais j'ai préféré faire une version finale pour passer à autre chose ;


Note sur 10 Commentaire Date de notation
7Un bon jeu (même si un peu lent au chargement)Le 08.05.2016 à 17:28
7Voir le testLe 12.05.2016 à 00:36

Commentaires :

Pages: Précédente | 1, 2, 3

Cakeisalie5Hors ligneAncien administrateurPoints: 1896 Défis: 11 Message
Posté le 12-05-2016 à 02:49 | #
Beh en fait, c'est simplement que je refuse de faire des sous-programmes pour que si l'utilisateur veuille intégrer le jeu dans ses programmes en le renommant, il puisse le faire librement. Les "sous-programmes" dans l'ensemble de mes programmes, on navigue dedans via la variable G (par exemple, le menu correspond à G=0, le menu de sélection à G=1, le tuto à G=9, le jeu principal à G=10, l'annonceur de victoire/perte à G=11, le loader de niveaux à G=21 histoire de l'avoir tout en bas pour y accéder facilement). Un gamemode ("sous-programme") est constitué d'un "If G=<numéro>", de l'initialisation, de la boucle principale "While G=<numéro>: ... :WhileEnd" [qui est facultative, comme pour le loader], et de choses à faire à la fin du gamemode. Pour quitter, il faut mettre le G à une valeur négative (généralement -1).

Les variables sont initialisées au début de chaque gamemode. Peu de variables circulent entre les gamemodes (comme le L qui est réglé par le sélecteur de niveaux, utilisé par le loader mais gardé pour la prochaine instance du sélecteur de niveaux, donc initialisé avant la boucle principale "While G >= 0").

Ce qui est bien avec cette décomposition, c'est que l'intégration d'un nouveau gamemode peut être différée. Par exemple, je peux très bien faire un gamemode dans un programme différent (en mettant <numéro à tester>->G) pour le tester lui seul. (c'est ce que j'ai fait pour le tutoriel et c'est ce que j'avais commencé à faire pour le mode infini)

Après, les boucles principales des gamemodes sont plus ou moins faites de la même façon : affichage, récupération de touche et réaction à cette touche, puis gestion éventuelle de l'animation (passage du temps avec une boucle for et la variable T, puis incrémentation éventuelle d'une variable A comme Animation). La récupération de touche, parfois, on attend un input, parfois, on voit juste quelle touche est appuyée. Pour la première technique, on utilisera juste :

'On attend que la touche précédente soit relâchée
Do:LpWhile GetKey≠0
'On récupère la prochaine touche
Do:GetKey->D
LpWhile GetKey=0


(à noter que j'utilise tout le temps D pour les GetKey)

Pour la seconde, une subtilité vient se mettre en place : on veut avoir la même condition de "une touche est considérée comme venant juste d'être appuyée si aucune n'était appuyée avant". Pour ça, on va utiliser une variable P (comme Pressed) : si elle est à 1, c'est qu'au tour précédant, une touche était appuyée, sinon, non. À noter qu'on n'a pas besoin de cette variable avec la première technique. Donc au niveau de la gestion des keys, faudra juste vérifier que P=0, et faut faire un "GetKey≠0->P" après, tout simplement.

Tout ça pour dire que je suis fatigué et que mon code est facilement navigable. (bon, faut connaître les détails, mais ils se devinent, et de toute façon, j'ai tout consigné ici maintenant )
KirafiHors ligneMembrePoints: 2180 Défis: 10 Message
Posté le 12-05-2016 à 08:23 | #
Tu regarderas j'ai enlevé les While, pour les remplacer par des Do, parce que j'avais des erreurs syntaxe je sais pas où et qu'avec des Do ça marchais mieux .
Puis ton système de GetKey est bien, mais j'ai optimisé pour gratter des octets, un p'tit exempl avec la variable P :
Plutôt que de faire GetKey≠0→P
J'ai fais Not GetKey→P
Comme ça j'inverse la condition et le
If Not P And D devient If PD
Et tu gagnes 2 octets !
KirafiHors ligneMembrePoints: 2180 Défis: 10 Message
Posté le 16-05-2016 à 13:27 | # | Fichier joint
Voilà un vaccin contre la flemme . (le jeu modifié en PJ)

Pages: Précédente | 1, 2, 3

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 189 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd