Je vous présente mon premier jeu Casio Basic !!!
NEON est un petit jeu, où vous devez éviter les lasers qui tentent de détruire votre vaisseau.
Essayez d'avoir le plus de points !
J'ajouterai des fonctionnalités et corrigerai des bugs dans de prochaines versions !
Bonne partie !
Vidéo d'une ancienne version (v.1.1) :
Commandes :
[flèches directionnelles] Bouger le vaisseau.
[exit] Arrêter la partie.
[exe] (Sur l'écran de fin de partie) rejouer.
[exit] (Sur l'écran de fin de partie) quitter.
Développement du jeu
100%
Mises à jour :
v.1.0b1
Première version buggée.
v.1.0
Première version stable :
Correction de certaines erreurs au niveau des graphismes.
Correction des bugs au niveau du gameplay.
Nouvel écran de fin de jeu.
Bug connus :
Les lasers restent en bas de l'écran après avoir touché le vaisseau.
v.1.1
Deuxième version stable :
Menu de sélection de mode de jeu :
Mode "NORMAL".
Mode "HARD".
Mode "CUSTOM".
Optimisé en terme de performances, un grand merci à @Choucas et @Redcmd :
Conditions contenant une seule instruction allégées pour économiser des octets.
LpWhile au lieu de While à plusieurs endroits pour économiser des octets.
Et plein d'autre choses (voir commentaires).
Bugs de lasers inatteignables par le vaisseau fixé.
Bugs d'affichage résolus (Les lasers restent à l'écran après avoir touché le vaisseau, et le score touche l'indication du nombre de vies).
Aucun bug connu pour cette version.
v.1.2
Meilleure gestion des touches [exe] et [exit].
Meilleurs menus
Nouveau menu pour choisir le nombre de vies en mode "CUSTOM".
Aucun bug connu pour cette version.
Fichier 2 : Version C.Basic (NEON v.1.0).
Fichier 3 : ZIP contenant toute les versions.
English description:
This is my first Casio Basic game !!!
In NEON, your goal is to avoid the lasers that are trying to destroy your spacecraft !
Try to get the best score !
I will add functionnalities and fix bugs in future versions !
Enjoy !
Vidéo of an old version (v.1.1) :
Commands :
[arrow keys] Move the spacecraft.
[exit] Stop playing.
[exe] (On the end screen) retry.
[exit] (On the end screen) quit.
Dev. of the game
100%
Updates:
v.1.0b1
First buggy version.
v.1.0
First stable version :
Fixed graphical errors.
Bug fixes at the gameplay.
New end screen.
Known bugs :
The lasers are staying at the bottom of the screen after touching the spacecraft.
v.1.1
Second stable version :
Menu for selecting the game mode :
"NORMAL" mode.
"HARD" mode.
"CUSTOM" mode.
Performance optimisations, big thanks to @Choucas and @Redcmd :
Better conditions to spare bytes.
LpWhiles are replacing Whiles to spare bytes.
Many other things (see comments).
Bugs with lasers that are off-screen fixed.
Display bugs fixed (Lasers staying on the screen after touching the spacecraft and score touching the lives indication).
No known bug for this version.
v.1.2
Better key press management for [exe] and [exit].
Better menus
New menu for choosing the number of lives in "CUSTOM" mode.
No known bug for this version.
File 2 : C.Basic version (NEON v.1.0).
File 3 : ZIP of all versions.
Petite remarque : lorsqu'on navigue sur le menu de départ, il est plus intuitif de supprimer la flèche de gauche ou celle de droite si il n'y a plus d'option de ce côté. De cette façon, l'utilisateur comprendra qu'il ne peut plus naviguer vers la gauche ou la droite.
Tu peux par exemple écrire :
Normal >, < HARD >, < Custom
Pour continuer sur le menu, essaye de mettre le moins de choses possibles dans la boucle. Mets les affichages "constants" (= les textes qui ne changeront pas durant la navigation dans le menu) en dehors des boucles. Ici, "Use right and left arrow keys to choose" et "MODE" en haut à gauche.
Le mode hard est sympa mais je pensais plutôt à centrer les obstacles vers le joueur (pas trop à gauche ou à droite)
Mb88 a écrit : Ps Is it possible to add comments in Casio Basic code ?
You can use a single quote ' to create a comment
You may find that under [F6] (CHAR), [F2] (SYBL), 7 across
comments end on the first : or newline
To create delay in C.Basic
You can use its custom TicksWait 20 command (Ticks and Wait are seperate)
this how ever will create a syntax error in normal basic
but if you place the command inside a comment ' then with a preceding /
C.Basic will execte the command, with normal basic just thinking its a comment
Making it possible to only need a single program for both normal and C.Basic '/TicksWait 20
You can increase the responsiveness of the controls by placing GetKey inside your waiting loop
For your menu
Do:LpWhile GetKey
'Wait until user releases the [EXE] key
Do
Do
GetKey → K
LpWhile Not K
'your control code
LpWhile K ≠ 31
For the game itself
0 -> K
For 1 -> I To 100
'/TicksWait 3
GetKey
'Because the player will hold the key down until after the ship has moved
'We dont want to detect the key just before its being released
I > 40 ⇒ Ans ⇒ Ans -> K
Next
But the best way to get super responsive controls is to decouple the player controls and the rest of the program
This however is rather hard on the super slow basic interpreter and without timing controllers or multitasking
But not impossible
This does mean that you would need to check if the player has hit a laser; inside the movement code
1 → I
Do
For I -> I To 20
'/TicksWait 3
GetKey -> K
K ⇒ break
Next
If K = 27
Then 'move etc
I + 5 → I
'/TicksWait 5
IfEnd
If K = 38
Then 'move etc
I + 5 → I
'/TicksWait 5
IfEnd
If I ≥ 20
Then 'your game code
0 → I
IfEnd
I + 2 → I
LpWhile K ≠ 47
Now the player can move independent of the lasers
This creates a loop counting to 20 starting at I, that is able to stop when the player pushes a button
If a key is pushed the movement code is handled straight away, rather than waiting on the loop to finish
But because the movement code takes up time, the loop must be artificially sped up otherwise the lasers will slow down. This is done by just increasing I (I + 5 → I)
Updating the lasers resets the counter back to 20
If a incorrect key is pushed, the loop is exited and the lasers slow down, so we must speed the loop up again I + 2 → I
The different I values were just guesses, you would proably want to change them
Test the different speeds when not pressing a key, when pressing a movement key and when pressing any other random key (that isn't [EXIT] )
Problem with this example is that it assumes the player movement code is super super fast, and the laser movement speed is decently slow
Which can be done, tho not always possible in some games
Its always nice to clear memory up at the end of the program
Thank you for all your advices !
I don't want to change the mouvements of the ship, because he can't go faster than the lasers, which makes the game a bit harder. Your idea for waiting the key release is very intresting, I will try to implement it. I already clear the lists a the end of the game.
EDIT :
But your key release waiting code was not working, I changed it a bit, and it's working now.
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