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.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » Un simulateur de vol pour la Graph 90+E !!
Shadow15510 Hors ligne Administrateur Points: 5504 Défis: 18 Message

Un simulateur de vol pour la Graph 90+E !!

Posté le 08/05/2019 13:46

Coucou !

Présentation

Fly Simulator (abrégé en FlySim) est un simulateur de vol pour la Graph 90+E. Le jeu se présente en 2 dimensions, vu de profil. Le but est de voler d'un aéroport à un autre, en transportant des passagers. Plus vous aurez de passagers et plus loin vous volerez, plus vous aurez d'argent pour entretenir et améliorer vos avions. Vous pourrez alors acheter de nouveaux avions et voler vers des aéroports encore plus éloignés, et ainsi avoir encore plus d'argent. Dans ce jeu l'avion reste au centre de l'écran, le paysage défile en arrière plan.

Bien entendu, pour palier à la vue en 2D peu réaliste, le jeu sera le plus poussé possible, tant au niveau de la souplesse que de l'ergonomie ou encore des mécanismes du jeu. Il est prévu d'avoir, par exemple, le choix de l'heure du vol : jour, aube, créspuscule, et nuit. Il faudra aussi gérer le moteur, les différents régimes, les manœuvres, le carburant, et la température de l'huile. En plus de devoir éviter les incendies du moteur, vous devrez répondre à la tour de contrôle !

Bref un jeu visant avant tout à vous plonger dans l'athmosphère d'un cockpit que ce soit dans les moments de calme du vol de croisière ou dans le stress d'un crash imminent avec la tour de contrôle qui vous demande des comptes.


La gestion de l'heure et du temps

L'heure sera simulée par un changement de la couleur du fond de l'écran. Pour simuler un jour, le fond est d'un bleu, l'aube est représenté par un fond mauve, le crépuscule sera symolisé par un fond de couleur orange, et la nuit par un bleu-gris très foncé.

Le temps sera moins nuancé avec la présence, ou non de nuages en haut de l'écran.

Les instruments

La jauge de carburant vous indique le carburant restant. La reserve est la zone rouge à gauche, et le voyant à la droite de la jauge, vous indique que la reserve est entamée. Il n'y pas encore de lien entre le carburant brûlé et la distances parcourue.

La température d'huile est liée au gaz. Pas de voyant, mais une partie de la jauge est colorée. Le vert correspond à une température normale. La zone orange et rouge signalent une température anormalement élevée. Si la jauge reste dans l'orange pendant 15 secondes, cela déclenche un feu moteur. Par contre, seules 10 secondes dans le rouge amènent à l'incendie. Les 3 zones correspondent à des régimes moteurs : la zone verte = 50 -> 75% des gaz, la zone orange correspond à 87,2% des gaz ou plus et la zone rouge à 100% des gaz.

L'anémomètre, vous indique votre vitesse via une aiguille. Le trait tout en haut correspond au 0. Puis chaque trait correspond à 2 pixels de déplacement horizontal à chaque *frame*. Le maximum est donc 14 pixels par *frame*. A 10fps (vitesse calculée à partir des animations des avions) le déplacement est à 140 pixels par secondes, donc un peu plus de 2,7 secondes sont nécessaire pour que l'écran soit traversé. Ce qui, à vitesse maximum, semble correct. La relation entre gaz est vitesse est : un trait = 12,5% des gaz. Les traits ont également des correspondances particulières :
- 1er trait 12,5% Comme sur certains avions le premier trait de l'anémomètre n'est pas 0. Ce premier trait ne suffit pas à faire voler l'avion même avec les deux crans de volets.
- 2nd trait 25% et 2 crans de volet
- 3ème trait 37,5% 1 cran de volet
- 4ème trait 50% vol dit *lent*
- 5ème trait 62,5% vol de croisière
- 6ème trait 78% vol de croisière rapide
- 7ème et 8ème trait 90,5% et 100% sont des régimes spéciaux réservés au décollage.

L'altimètre à lui aussi 8 trait. Celui tout en haut correspond au niveau du sol. Le sol fait 20 pixels de haut. En comptant les 30 pixels de la barre des instruments plus la hauteur de l'avion (20 pixels) le 0 de l'altimètre est de 70 pixels de haut. En comptant 20 pixels par barres de l'alti. 7x20 = 140 ; 140+70 = 210 pixels de haut. Cela laisse donc une marge de 6 pixels en haut lorsque que l'avion est à son altitude maximale.

l'horizon artificielle, vous indique l'assiette et le roulis de l'avion.

Les volets ont trois position celle actuelle est soulignée par un voyant allumé en vert clairs, les autres étant en en vert foncés. La première position celle tout en haut est le neutre. Dans le jargon on parle de volet *en lisse* car ils ne dépassent pas du profil de l'aile. La seconde position juste en dessous, au milieu, correspond au premier cran de volet, et la position tout en bas correspond au deuxième cran. Leurs utilisations sont décritent dans la partie dédiée au pilotage.

La manette des gaz et le cadrant des RpM (Rotation moteurs Par Minutes) vous indiquent ici le pourcentage de gaz, le 0 etant tout en bas du cadrant. Il y a 7 traits donc chauqe trait équivaut 14,3 % des gaz.

Les témoins du train d'aterrissage sont en rouge si le train est rentré, en vert si le train est dehors, près à l'aterrissage. Dans la vraie vie, le voyant connait une prériode transitoire en jaune/orange pour signalé que le train est en cours de sortie. Ici la sortie est tellement rapide que, par simplification, ce passage a été abandonné.

La fenêtre des fréquences vous indique quelle fréquence est actuellement utilisée lors des communications. Ce sera à vous de changer cette fréquence via les touches dédiées. Comme dans la vraie vie, on ne change pas de fréquence n'importe comment : on suit les instruction de la tour en collationnant la sortie de zone avec la nouvelle fréquence, en changeant la fréquence pour celle demandée et en s'identifiant sur la nouvelle fréquence. Les changements de fréquence en dehors de ces périodes seront prises pour des fautes de pilotages : en effet la fréquence n'est plus la bonne, donc vous ne pouvez plus communiquer avec le sol, ni le sol avec vous… Comme dans la vraie vie également, les fréquences sont hertz et celle reservées aux communicationss sont comprises dans la plage allant de 118,00 hz à 137,00 Mhz avec un pas de 0,05 Mhz. Plus récemment, le système s'est affiné aux centième de hz, mais le jeu s'arrête lui aux dixièmes.

Le radar vous indique votre position. A gauche l'aéroport de départ, à droite celui d'arrivée, vous serez représentez par une flèche pointant sur la ligne au dessus.


Le cockpit en bas de l'écran, représente les instruments de l'avion


Le Cessna 172 SP



Le Learjet 45


Le Beechcraft 1900 D


Je prévois également une gestion de plusieurs heure de la journée…

Merci d'avance de votre aide à ce projet !

Les sources de l'ancien projet sont en fichier joint et sont 100% libres de droit.
Ancien projet
Ancien projet
Concernant le code, je développerai ce jeu grâce a C.Basic du célèbre Sentaro21 !

J'ai plutôt pas mal avancé avec la gestion de l'avion qui est terminée avec les instruments, tous fonctionnels ! On peut décoller atterrir, et voler (monter, descendre et tourner) Quelques screens :






Fichier joint


Précédente 1, 2, 3, 4, 5, 6, 7, 8 Suivante
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 12/05/2019 13:33 | #


Du coup tu reste sur la matrice 3d ?
Lephenixnoir Hors ligne Administrateur Points: 24581 Défis: 170 Message

Citer : Posté le 12/05/2019 13:35 | #


Shadow, je te conseille de mettre ton post principal à jour avec des images et un résumé plus actuel. Vu l'activité ça pourrait servir
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Captainluigi Hors ligne Membre Points: 816 Défis: 1 Message

Citer : Posté le 12/05/2019 13:36 | #


Lephenixnoir a écrit :
Shadow, je te conseille de mettre ton post principal à jour avec des images et un résumé plus actuel. Vu l'activité ça pourrait servir


Oui , ça parle pas trop aux lecteurs .
Les bons artistes copient, les grands artistes volent. Picasso

Passé ici il y a peu. ಥ‿ಥ

Chaîne youtube
Cliquez pour recouvrir

Vieux projets et jeux sur Casio
Cliquez pour recouvrir
Shadow15510 Hors ligne Administrateur Points: 5504 Défis: 18 Message

Citer : Posté le 12/05/2019 13:45 | #


J'ai mis à jour le post principal !

J'ai un problème : j'utilise ML et j'aimerai utiliser la commande du menu Extend : ReadGraph( mais le programme change de VRAM, comment faire ?

Merci d'avance !
"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

Sentaro21 Hors ligne Membre Points: 878 Défis: 0 Message

Citer : Posté le 12/05/2019 14:48 | # | Fichier joint


This is a sample program with ReadGraph and display.
Get from current VRAM to Mat and display.
[Fichier joint]ReadGraph.zip
Je continue à développer C.Basic. (Il est compatible avec Basic Casio.)
Overclocking utilitaire Ftune/Ptune2/Ptune3 est également disponible.
Si vous avez des questions ou un rapport de bogue, n'hésitez pas à me le faire savoir.
Shadow15510 Hors ligne Administrateur Points: 5504 Défis: 18 Message

Citer : Posté le 12/05/2019 15:32 | #


Okay ! Thanks
"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

Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 12/05/2019 18:07 | #


@Shadow15510: Tu reste sur l'idée de la matrice 3d ?
Shadow15510 Hors ligne Administrateur Points: 5504 Défis: 18 Message

Citer : Posté le 12/05/2019 18:25 | #


Oui, je pense que oui.
Mais je ne vois pas comment gérer tout ça

Sentaro : With the _bmp command, it is possible to draw a matrice with the white color transparent ?
"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

Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 12/05/2019 18:26 | #


Ben considere mon idée, c'est une solution comme une autre
Shadow15510 Hors ligne Administrateur Points: 5504 Défis: 18 Message

Citer : Posté le 12/05/2019 18:31 | #


Le raycasting ? si c'est ça c'est trop lent sinon même avec une matrice 3D, je ne sais pas comment faire… Je n'ai jamais fait de 3D

Si je peux faire une matrice géante avec un balayage, je regarde la case minimum à gauche (en fonction de l'angle par rapport au nord qui est connu) et la case maximum à droite(en fonction de la valeur du minimum) , et j'affiche tous avec un degré de zoom différent selon la distance calculée je ne sais pas comment… Sachant que les deux extrémités de la matrice se touchent, ça ferait une sorte de cinéma panoramique avec un simuli de 3D gérée par un zoom avec des images en 2D, ça marche pour les trucs en vol, mais au sol, la piste, je ne peux pas faire un truc en 2D, ça se verrait ! Bref, je ne sais pas quoi faire…
"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

Lephenixnoir Hors ligne Administrateur Points: 24581 Défis: 170 Message

Citer : Posté le 12/05/2019 18:37 | #


Le raycasting ne gère pas bien l'inclinaison, ce n'est pas fait pour.

La technique matricielle te permet de transformer et projeter des polygones en 3D pour les envoyer sur l'écran, c'est une méthode très efficace pour faire le dessin et qui est utilisée dans Windmill notamment...
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 12/05/2019 18:44 | #


Sinon il y a la solution avec la matrice dans laquelle tu enregistre les coordonnées de chaque objet. Après chaque déplacement tu balaye cette matrice (on pourra trier par coordonnées pour aller plus vite) pour voir quels objets sont dans le champ de vision.
Shadow15510 Hors ligne Administrateur Points: 5504 Défis: 18 Message

Citer : Posté le 12/05/2019 20:06 | #


Pour le champ de vision, je pense appliquer la méthode que j'ai décrite : balayer une matrice en 3D en passant par l'angle par rapport au nord

J'avoue ne pas bien comprendre comment gérer la matrice en 3D ni comment afficher des polygones…

En partant de ce que je connais : j'ai une matrice 3D avec une certaine profondeur qui correspond à la distance avion - horizon la hauteur se limite entre 0 le sol et 3600, plafond de l'avion tel qu'il est enregistrer dans le programme (10 000 mètres pour le joueur), j'ai une plage à balayer qui part du l'orientation de l'avion jusqu'à une seconde valeur calculée à partir de la première, et dans les matrices j'ai le numéro du dessin à afficher. Et ensuite ?

Disperseur : ta méthode nécessite d'avoir un nombre réduit d'objets, sinon la boucle qui teste va prendre du temps Donc je ne pense pas retenir cette idée, mais si rien d'autre ne marche, je pense que j'essaierai un truc comme ça.
"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

Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 12/05/2019 20:48 | #


Ben justement je pense que si tu classe tes objets selon leurs coordonnées (selon les x par ex) tu peux accélérer la recherche
De mon côté j'essaye de simuler les déplacements avec les vecteurs et les différents axes. Cela uniquement sous forme numérique, j'ai mes coordonnées affichées ainsi que ma vitesse horizontale, verticale... etc. Histoire de parvenir à gérer les déplacements de l'avion. Ça ne t'embête pas que je cherche sur le sujet en parallèle à toi ? Je suis notamment en train de passer mon BIA (si tu vois ce que c'est)
Shadow15510 Hors ligne Administrateur Points: 5504 Défis: 18 Message

Citer : Posté le 13/05/2019 13:11 | #


Concernant ton idée Disperseur, j'ai réfléchis un peu et finalement c'est peut-être plus rapide à condition de trier les objet au préalable, je vais partir sur ton idée je pense

Sinon, oui, tu peux chercher de ton côté aussi, fais comme tu veux !

Oui je connais le BIA (je l'ai eu il y a 2-3 ans, j'étais en 3ème, depuis je prépare mon mon brevet de pilote renommé LAPL récemment )
"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

Disperseur Hors ligne Membre Points: 1830 Défis: 1 Message

Citer : Posté le 13/05/2019 13:16 | #


Super
Shadow15510 Hors ligne Administrateur Points: 5504 Défis: 18 Message

Citer : Posté le 13/05/2019 13:18 | #


J'avoue ne pas comprendre comment afficher un objet en 3D à la bonne distance aux bonnes coordonnées...
"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

Sentaro21 Hors ligne Membre Points: 878 Défis: 0 Message

Citer : Posté le 13/05/2019 14:28 | #


Shadow15510 a écrit :
Sentaro : With the _bmp command, it is possible to draw a matrice with the white color transparent ?

Only add this command.
Transp-Color White

The white(=65535=0xFFFF) part of the matrices is transparent.
Je continue à développer C.Basic. (Il est compatible avec Basic Casio.)
Overclocking utilitaire Ftune/Ptune2/Ptune3 est également disponible.
Si vous avez des questions ou un rapport de bogue, n'hésitez pas à me le faire savoir.
Shadow15510 Hors ligne Administrateur Points: 5504 Défis: 18 Message

Citer : Posté le 13/05/2019 14:29 | #


Yeah ! Thanks ! I've only one question : where is this command ?
"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

Sentaro21 Hors ligne Membre Points: 878 Défis: 0 Message

Citer : Posté le 13/05/2019 14:40 | #


Here
[SHIFT]-[F4](SKETCH)-[F6]-[F6]-[F1](COLOR)-[F6]-[F6]-[F5](Transp-Color)

Je continue à développer C.Basic. (Il est compatible avec Basic Casio.)
Overclocking utilitaire Ftune/Ptune2/Ptune3 est également disponible.
Si vous avez des questions ou un rapport de bogue, n'hésitez pas à me le faire savoir.
Shadow15510 Hors ligne Administrateur Points: 5504 Défis: 18 Message

Citer : Posté le 13/05/2019 14:41 | #


Okay ! It's just amazing, thank you very much !!
"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

Précédente 1, 2, 3, 4, 5, 6, 7, 8 Suivante

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 v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 86 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