Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » Plane - Créer votre propre compagnie aérienne !
Choukas Hors ligne Membre Points: 90 Défis: 5 Message

Plane - Créer votre propre compagnie aérienne !

Posté le 21/02/2022 12:44

Hello les amigos !

Tout est dans le titre
J'essaye de concevoir un programme dans lequel le joueur pourrait créer une compagnie aérienne en achetant des avions, en planifiant les trajets, en recrutant des pilotes, etc...
Le tout... en BASIC CASIO.
Autant vous dire que la tâche est ardue

Les difficultés

La mémoire

La mémoire est très limitée (64ko) : pour pallier ce problème, j'essaye d'optimiser le programme un maximum. Pour ça :
> J'utilise du Multi Drawstat plutôt que des pictures. Tout le Multi Drawstat est écrit à la mano pour gratter quelques octets.
> Les conditions sont ultra simplifiées.
Ex : O + 1 - 2(G = 28) -> O plutôt que :
If G=28 :Then
Dsz O
Else Isz 0
IfEnd

# Ou même :
G=28 => Dsz O
G=37 => Isz O

Le temps de traçage

Le dessin est assez lent : beaucoup moins avec le Multi Drawstat en réalité donc c'est pas vraaaiment un soucis.

La gestion des ticks (horloge)

Le plus gros problème réside dans la gestion du temps. Pour l'immersion, je souhaiterais que les vols (et d'autres mécaniques du jeu) ne soient pas instantanés. Ça permet d'éviter que le joueur balance toute sa flotte en un coup et que les rentrées d'argent soient trop rapides.
Il n'y a, à ma connaissance, aucun moyen de gérer efficacement le temps en Basic. Il y a quelques années, j'avais conçu un petit programme (une grosse boucle de jeu) qui laissait à chaque tour la main à un sous programme se chargeant d'incrémenter le temps, puis qui retournait au programme appelant pour que le joueur fasse des actions. C'était codé à l'arrache mais ça marchait plus ou moins. Inconvénient : fallait laisser tourner le programme

Avez vous une autre solution ? I'm desperate



J'ai besoin de vous !
Je serais ravi d'écouter vos conseils d'optimisation, vos idées et vos suggestions pour le jeu

Je posterai les avancées du projet en commentaire ou en édit de ce post.

Merci beaucoup d'avoir pris le temps de tout lire et à la prochaine


Shadow15510 Hors ligne Administrateur Points: 5401 Défis: 16 Message

Citer : Posté le 21/02/2022 13:00 | #


Hey !
Joli projet !

Tu peux regarder du côté de CBasic cette version améliorée du BASIC Casio permet entre autre : une bien meilleure rapidité, des fonctionnalités supplémentaire dont une gestion du temps. De même CBasic permet d'exploiter la mémoire de stockage de la calculatrice, soit 1.5 Mo (3 Mo pour les derniers modèles) de mémoire en plus.
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Choukas Hors ligne Membre Points: 90 Défis: 5 Message

Citer : Posté le 21/02/2022 13:25 | #


Hello, merci pour le soutien !

Effectivement j'en ai déjà entendu parler Mais j'aimerais, dans la mesure du possible, rester sur les fonctionnalités built-in de la calculatrice. C'est le défi haha Rassure toi je ne suis pas borné ! À terme, je ferai sûrement une version améliorée du programme en C mais pour l'instant je préfère faire du "vanilla" complet
Shadow15510 Hors ligne Administrateur Points: 5401 Défis: 16 Message

Citer : Posté le 21/02/2022 13:32 | #


Je vois, pour mesurer du temps juste avec le Basic de base, c'est sûr que ce n'est pas nativement prévu, après, c'est peut-être possible de ruser, en faisant avancer le jeu d'un "jour" ou autre unité élémentaire de temps tous les n tour de boucle. À voir si ça ne ralenti pas trop l'exécution du reste…

Après, je pense que le problème de la place ne se pose pas trop, c'est grand 64ko. Niveau graphisme, l'affichage d'image pré-enregistrée est instantanée, mais niveau taille c'est vrai que ça coûte cher…

En résumé, le seul "gros" problème c'est surtout la gestion du temps réel quoi.
"Ce n'est pas parce que les chose sont dures que nous ne les faisons pas, c'est parce que nous ne les faisons pas qu'elles sont dures." Sénèque

Mb88 Hors ligne Membre Points: 294 Défis: 0 Message

Citer : Posté le 21/02/2022 13:38 | #


Après moi j'ai utilisé une boucle pour le timing dans mon jeu et ça marche très bien, après il ne faut pas exécuter trop de choses dedans, sinon ça devient très très lent (lorsque j'ai commencé à le coder il tournait à ~1fps).
Choukas Hors ligne Membre Points: 90 Défis: 5 Message

Citer : Posté le 21/02/2022 14:41 | #


Shadow15510 a écrit :
Je vois, pour mesurer du temps juste avec le Basic de base, c'est sûr que ce n'est pas nativement prévu, après, c'est peut-être possible de ruser, en faisant avancer le jeu d'un "jour" ou autre unité élémentaire de temps tous les n tour de boucle. À voir si ça ne ralenti pas trop l'exécution du reste…


Yep je vais tester. À la limite, si je vois que c'est pas viable au niveau de l'exécution, je peux toujours augmenter la difficulté du jeu d'une autre manière. Si tu as des pistes qui vont dans ce sens je suis preneur

Mb88 a écrit :
Après moi j'ai utilisé une boucle pour le timing dans mon jeu et ça marche très bien, après il ne faut pas exécuter trop de choses dedans, sinon ça devient très très lent (lorsque j'ai commencé à le coder il tournait à ~1fps).


Ouep c'était mon idée de départ. Est-ce que tu as réussi à arriver à quelque chose d'efficace ? Je suis curieux de voir ton code si ça ne te dérange pas
Mb88 Hors ligne Membre Points: 294 Défis: 0 Message

Citer : Posté le 21/02/2022 15:27 | #


C'est le jeu NEON : https://www.planet-casio.com/Fr/programmes/programme4220-1-neon-mb88-jeux-directiontir.html#63421. Pour que mon jeu fonctionne correctement, j'avais tout modifié pour le faire fonctionner en mode texte. Je l'avoue, je suis débutant en Casio Basic.
EDIT :
Après je l'ai codé sur une calculette récente (Graph 35+e II), donc je ne sais pas ce que ça donne sur les anciennes calculettes (je ne sais pas sur quoi tu codes).
Choukas Hors ligne Membre Points: 90 Défis: 5 Message

Citer : Posté le 22/02/2022 01:09 | #


Ouep, j'ai pu regarder et ça reste assez casse gueule. Je pense que le mieux serait d'oublier cette mécanique. Il faut que je réfléchisse à d'autres moyens pour élever un peu la difficulté
Redcmd En ligne Membre Points: 336 Défis: 7 Message

Citer : Posté le 22/02/2022 05:31 | #


Are you able to give us your code?
(can use FA-124)

you can remove the last bracket )
O + 1 - 2(G = 28 -> O

you can remove all end brackets (except for string commands)
Mat A[List1[A]+X,List2[B]+Y]=5->T
5=Mat A[X+List1[A,Y+List2[B->T
RedCMD#4299 - Discord
Mandelbrot SNKEmini Minesweeper
Choukas Hors ligne Membre Points: 90 Défis: 5 Message

Citer : Posté le 22/02/2022 11:03 | #


Redcmd a écrit :
you can remove the last bracket )

I already removed the bracket in this condition indeed but thanks for pointing it out

Redcmd a écrit :
Are you able to give us your code?

I haven't done anything yet But maybe I'll push it in a git repo

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2022 | Il y a 87 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