Vos méthodes de programmation
Posté le 25/07/2012 23:00
Bonsoir à tous, je créé ce sujet pour vous demander quelles sont vos méthodes de programmation.
Je précise que je ne savais pas où placer ce sujet, alors si son emplacement pose problème, ça ne me dérange pas qu'il soit déplacé.
Bref, voici un modèle de post pour connaître votre méthode :
Modèle
Masquer
Initialisation :
Fenêtre Texte :
codes/explications
Fenêtre Graphique :
codes/explications
Boucle principale du logiciel :
Avant la boucle principale :
codes/explications
Interface :
codes/explications
Partie Getkey :
codes/explications
Partie code du logiciel :
codes/explications
Menu principal :
Interface :
codes/explications
Passage à la boucle principale :
codes/explications
Mémoires utilisées :
Sauvegarde :
Vos Moyens de sauvegarde
Mappage (jeux) :
codes/explications
Autres parties du programme :
Mettez ce que vous voulez ici
Ordre de programmation :
1-
2-
3-
4-
etc...
Comment avez-vous des idées de logiciels ?
Voici ma méthode de programmation :
Initialisation :
Fenêtre Texte :
Lbl 0
ClrText
0->A~Z
[Variables à initialiser]
Je commence souvent mes programmes par un "ClrText", pour dire d'être sur que aucun ancien affichage soit sur l'écran au démarrage du logiciel.
Ensuite je met mes variables à zéro pour éviter d'avoir des problèmes plus tard.
Enfin, je met les chiffres qu'il faut dans les variables.
Fenêtre Graphique :
Lbl 0
[Configurations de l'écran]
ClrGraph:ViewWindow 1,127,0,1,63,0
0->A~Z
[Variables à initialiser]
Tout d'abord, je met les configurations de l'écran (AxesOff, etc...), puis j'efface la fenêtre graphique pour ensuite la réinitialiser. enfin, je fais la même chose pour les variables que pour la fenêtre textuelle.
Boucle principale du logiciel :
Avant la boucle principale :
[Initialisation des variables]
[Début de l'initialisation de l'interface]
While 1
[Boucle Principale]
WhileEnd
Rien à expliquer...
Interface :
Locate X,Y,""
ou
""
ou
[Codes graphiques(PlotOn, etc...)]
Je fais toujours mes interfaces avec ces codes ci-dessus.
Partie Getkey :
Getkey->[TETA]
If [TETA]=[Chiffre]
Then [Le Code]
ifEnd
If [TETA]=[Chiffre]
etc...
Je prend le Getkey que je met dans [TETA] puis je fais le code si tel bouton est appuyé.
Partie code du logiciel :
Je n'ai pas de code spécifique pour les jeux, tout dépend de ce que j'ai décidé de créer, ça peut être des conditions ou des lignes qui s’exécutent automatiquement.
Si le code m'embrouille, je le divise en plusieurs fichiers (exemple : mon RQuest)
et, si les fichiers sont petits, et pas repris à plusieurs reprises, soit je laisse les fichiers séparés, soit je les remets dans le fichier principal.
Menu principal :
Interface :
Locate X,Y,""
ou
""
ou
[Codes graphiques(PlotOn, etc...)]
Exactement la même chose que dans l'interface du programme, j'ai une tendance à faire les menus en utilisant le moteur graphique du programme.
Passage à la boucle principale :
J'initialise un morceau de l'interface, plus précisément les parties fixes pour éviter de faire ramer le programme.
Mémoires utilisées :
Sauvegarde :
j'utilise principalement les listes pour sauvegarder des positions, des variables, et même parfois le programme pioche directement dans les listes pour économiser des variables.
Mappage (jeux) :
J'utilise souvent les matrices, et, comme très souvent mes jeux utilisant les matrices sont en fenêtre textuelle, j'utilise des matrices de 7x21, tout l'écran.
Autres parties du programme :
je n'ai pas d'autres parties spécifiques pour mes programmes
Ordre de programmation :
1-Initialisation
2-Avant la boucle principale
3-Interface
4-Partie GetKey
5-Partie du code du logiciel
6-Menu Principal
7-Optimisations du code
Voilà, j'espère que vous prendrez le temps d'expliquer comment vous programmez
Citer : Posté le 23/02/2014 10:04 | #
Enfin Dsz et Isz sont prévus pour les variables, pas pour les listes et les matrices malheureusement.
Après j'ai pas regardé pour la vitesse mais ça m'a l'air correct, j'ai jamais eut de problème de lenteur avec ça.
Sinon, une astuce pour aller plus vite lors de l'affichage d'un terrain avec le tile mapping (une case de matrice = un élément du terrain), le mieux, c'est de tout mettre dans un sous-programme qui les affiches (ou mettre une autre condition qui englobe les affichages) et de n'y aller que si un élément existe: sinon le programme va faire tout les tests d'élément quand il n'y a rien et prendre plus de temps, par exemple:
For 1→Y To Ymax //Ymax= largeur du terrain
Mat A[Y,X→E
If E //si un élément est présent
Then
//le contenu qui suit peut aussi être mis dans un sous-programme
If E=1
Then //on affiche un mur par exemple
IfEnd
If E=2
Then //on affiche des pièges
IfEnd
...
IfEnd
Next
Next
C'est un exemple mais ça permet d'aller plus vite que si on avait pas mis If E
Citer : Posté le 23/02/2014 10:33 | #
Ou alors:
Ça évite un bloc supplémentaire
Mais tu as raison
J'avais déja utilisé cette astuce.
En plus c'est un bon exemple. Dans ce cas, je ne sais pas s'il serait vraiment plus rapide de mettre à jour des listes pour faire un DrawStat que des simplement faire des F-line avec des coordonnées relatives.
Citer : Posté le 23/02/2014 10:37 | #
Ça dépend de la taille et de la complexité de tes sprites: si c'est un truc tout simple, type un carré, c'est mieux d'utiliser les f-line tandis qu'un personnage soigné sera plus simple en DrawStat: le drawStat devient intéressant pour des gros trucs.
Citer : Posté le 23/02/2014 10:44 | #
Dans l'ensemble je m'arrangeais plutôt pour tourner entre 3 et 6 traits par tile.
En moyenne il me fallait une vingtaine de secondes (de mémoire) pour afficher une map moyennement chargée en décor.
Le problème c'est lorsque, des fois, il y a des traits "indépendants" que je ne sais pas gérer avec le DrawStat: je ne programme plus en Basic depuis des plombes (en fait je suis à la recherche d'un projet intéressant )
Ajouté le 23/02/2014 à 10:51 :
Petits tests:
1000 affectations:
Var - 2.5 s
List - 8.5 s
Mat - 5.5 s
1000 lectures (sans affectation)
Var - 2 s
List - 6 s
Mat - 5s
C'est bien ce que je pensais
Citer : Posté le 23/02/2014 10:56 | #
Pour une idée des performances des fonctions Basic Casio, j'avais réalisé un tableau comparatif multi-calto : http://www.planet-casio.com/Fr/forums/topic9648-1-Vitesse-des-fonctions-Fx-CG10-20-%28+comparaisons-G85-G100%29.html
Vitesse des fonctions en Basic Casio | 7 days CPC | Casio Universal Wiki | Tutoriel Basic Casio
>>> Give me a click Brother <<< >>> Teste mon générateur de mots nouveaux <<<
>>> Random Youtube Video <<<
Citer : Posté le 23/02/2014 12:05 | #
Le problème c'est lorsque, des fois, il y a des traits "indépendants" que je ne sais pas gérer avec le DrawStat
Il suffit de mettre un point super éloigné, il ne sera pas dessiné.
Par exemple :
Citer : Posté le 23/02/2014 12:10 | #
Bien vu
Citer : Posté le 23/02/2014 12:11 | #
Pour ça je fais souvent 128-> <variable> pour éviter de répéter la valeur (souvent θ)
Citer : Posté le 23/02/2014 12:15 | #
Pour économiser 2 octets à chaque fois ?
Citer : Posté le 23/02/2014 12:20 | #
Quand tu commence à avoir de gros éléments ou plein d'éléments tu es content de gagner un peu de place, sourtout pour les gros projets.
Citer : Posté le 23/02/2014 12:29 | #
Sinon moi je mes juste e9
Citer : Posté le 23/02/2014 13:12 | #
Chacun fait comme il veux... Sinon, quand vous cherchez un algo pour vos progs, vous préférez utiliser une feuille et un crayon, blocnote ou directement sur la caltos? Perso c'est un peu les 3, mais j'ai un petit cahier dans lequel je note tout.
Citer : Posté le 23/02/2014 14:13 | #
J'utilise plus une feuille de brouillon moi. je les recycle
Zelda de Smashmaster
Super Geek Brothers de Siapran
Pac-Man
Pac-Man Color
Meta Ball
Add-ins Jetpack Joyride et Pac-Man sur PRIZM (les 2 non commencés mais en réflexion)
A la recherche des sprites jetpack Joride si quelqu'un les a en couleur
Citer : Posté le 23/02/2014 14:32 | #
Ma tête
Ensuite ça sort sur la calto (correct dans 90% des cas)
Et merde j'ai encore mis ce smiley qui passe pas
Citer : Posté le 23/02/2014 14:46 | #
Je le fais aussi dans ma tête mais j'aime bien avoir un suport écrit pour le récupérer après.
Citer : Posté le 23/02/2014 14:57 | #
Bien sûr
C'est vrai que des fois ce serait bien que j'ai des notes... que je n'ai jamais écrites.
Exemple, une fonction qui te retourne un pixel dans un tableau d'unsigned char:
{
int px = ((_SIZE_X-1)>>3)+1;
return (*(image+y*px+((x-x%8)>>3))>>(x%8))&1;
}
Quand il a fallu la modifier...
Citer : Posté le 23/02/2014 16:55 | #
Réponse au message d'Alphacreator du 22/02/2014 à 22h30:
Ça fait à peu près 6 mois que je commence à programmer et je me suis jamais vraiment intéssé aux list/matrices (du moins jusqu'à maintenant où j'ai des gros projets en drawstat) j'ai appris à les utiliser il y a peine 2/3 mois et je ne les aiment pas trop car ça prend pas mal de place pour pas grand chose.
-ASM (assembleur) sur x86 et gb-Z80
-locomotive basic/amstrad basic
-Basic Casio
-VBS
-Batch
-Bash
-Python 3.4
-html
-CSS
-javascript
-Lua
-brainfuck
-ruby
Il faut savoir que je ne maitrise pas parfaitement tout ces langages
[/spoiler]
Remerciment
Ma calto: graph 75
Citer : Posté le 23/02/2014 17:01 | #
Je comprend, mais tu verra qu'ils servent beaucoup pour le stockage à long terme, les listes et les matrices sont très utilisées dans les jeux... (je fais un jeu de gestion médival et je ne pourrais pas m'en passer)
Citer : Posté le 23/02/2014 18:11 | #
Il servent (j'ai pas mal de projet ou je compte les utiliser)mais il ne sont pas très bien optimisées.
-ASM (assembleur) sur x86 et gb-Z80
-locomotive basic/amstrad basic
-Basic Casio
-VBS
-Batch
-Bash
-Python 3.4
-html
-CSS
-javascript
-Lua
-brainfuck
-ruby
Il faut savoir que je ne maitrise pas parfaitement tout ces langages
[/spoiler]
Remerciment
Ma calto: graph 75
Citer : Posté le 23/02/2014 20:15 | #
Casio et l'optimisation
une longue histoire d'amourJouez à 6 sur une seule calto : Curve Fever
Un die and retry qui vous fera bieeeen rager Test Andropov
un très bon sokoban
le seul vrai jeu de foot en basic : FIFA 12
Ca c'est ce que j'appelle un jeu de reflexion jewel master
Qui vaincra l'intelligence artificielle de cet othello
Le célèbre pacman
Et tant d'autres BTL's games
Le jeu du mois de Novembre et award du jeu le plus dur de l'année 2013 MultiTask, testez-le
Citer : Posté le 23/02/2014 20:23 | #
Déjà qu'il y a des conneries assez monumentales dans la bibliothèque du système.
Ajoutez-y la magnificence de l'interpréteur BASIC (dont on se demande parfois s'il n'est pas ralenti exprès).
Alors vous pourrez toujours optimiser vos programmes ça restera nul
Merci CASIO