Day.png);">
Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker


Apprendre
RPG Maker

Tutoriels
Guides
Making-of

Dans le
Forum

Section Entraide

News: Les actualités de fin d'année / Jeux: Glixel en version complète / Jeux: Izac 1 / News: Des jeux d'hiver sous la couette / Scripts: Système de vol pour RPG Maker (...) / Chat

Bienvenue
visiteur !





Désactiver
la neige


publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

237 connectés actuellement

30834897 visiteurs
depuis l'ouverture

2164 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Blog Alioune Fall

Fairy Tail Constellations

Offgame

Hellsoft

Le Comptoir Du clickeur

Eclipso

Guelnika & E-magination

Tous nos partenaires

Devenir
partenaire



[Mégadrive] #13 Programmer la mégadrive , Les datas

Ecrire des informations en Rom avec les Data

Ecrit par Monos le 02/08/2017


❤ 0

Chapitre 12 : Data
Nous savons faire pas mal de chose sur la mégadrive. Nous savons (de Marseille) utiliser un joystick, afficher un sprite à la position que nous voulons à l'écran, poser un Tiles, faire des boucles, des conditions, un peu utiliser les tableaux, nous allons entrer dans les DATA.

Les Data c'est le bien en basic ! C'est une suite de valeur (ou de chaîne) mise en mémoire et qui peut être appelé par le programme. Sur la mégadrive c'est tout simple des donnés qui sont codés dans la ROM. (La cartouche heins).
Nous avons déjà vu ça avec les Datalong pour mémoriser les graphismes,et les Dataint pour mémoriser une palette de couleur, mais il existe aussi les data simple.

Première approche des Data avec Data


Premièrement pour n'importe qu'elle suite de data, il faut une étiquette pour l'identifier.
L'étiquette se compose d'un nom suivie des deux points. Notons que j'ai l'habite de débuter mes noms d'étiquettes par un E_

Portion de code : Tout sélectionner

1
E_data:



Maintenant nous allons placer notre suite de data l'un après l'autre.
Nous allons débuter avec une chaîne de caractère

Portion de code : Tout sélectionner

1
2
3
 
Data "Chat","Chien","Ours"
Data "Oiseau","Humain","Panda"



J'ai placé 6 animaux dans cette liste sur deux lignes de Data (oué nous sommes au point de vu biologique des animaux !) Chaque éléments est séparé par une virgule et comme c'est une chaîne (des lettres quoi), je place l'élément entre deux guillemets droit. "Elements". A la fin de la ligne je ne place pas de virgule ! C'est important.

Maintenant nous allons afficher à l'écran de la mégradrive les 6 noms d’animaux ! Pour cela il faut :
=> Une commande pour se brancher que l'étiquette.
=> Une commande pour lire la donnée Data
=> Une commande pour afficher à l'écran la donnée Data.

Pour se brancher sur une étiquette 'Data' c'est la commande Restore nom de l'étiquette.
Donc dans notre exemple :

Portion de code : Tout sélectionner

1
Restore E_Data


Maintenant pour lire une donnée data c'est la commande Read variable.
Dans dans notre exemple

Portion de code : Tout sélectionner

1
Read N$


je place un $ aprés la variable car c'est une variable qui va mémoriser une chaîne de caractère. (Des lettres quoi)
Maintenant nous n'avons plus à afficher à l'écran la variable N$ avec print

Ce qui fait :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
Restore E_Data
Read N$
Print N$
 
E_data:
Data "Chat","Chien","Ours"
Data "Oiseau","Humain","Panda"




Normalement si tous se passe bien, vous devez avoir =>Chat à l'écran.
Dupliquont le Read N$ et Print N$.


Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
Restore E_Data
Read N$
Print N$
Read N$
Print N$
 
E_data:
Data "Chat","Chien","Ours"
Data "Oiseau","Humain","Panda"



Chat et Chien s'affiche bien.
En fait autre que le nom de l'étiquette, il y a aussi in compteur invisible. (Index), et à chaque fois que Read est utilisé, le compteur est modifié de 1 prêt à lire la prochaine donné, et avec un Restore on re initie le compteur à 0 sur l'étiquette voulu !

Bon faire à chaque fois Read machin c'est lourd, nous allons pour l'exemple utiliser une Boucle ! nous savons qu'il y a 6 données, nous allons donc utiliser pour cette exemple une boucle For !

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
Restore E_Data
 
For X=0 to 5
 Read N$
 Print N$
Next
 
E_data:
Data "Chat","Chien","Ours"
Data "Oiseau","Humain","Panda"



Et voila le travaille. (Notons que pour cette exemple je n'ai pas initié les variables, Le second basic ne le demande pas nativement, mais je vous conseille de la faire quand vous entrez en mode production de jeu véritablement.
Attention ou vous placez votre boucle ! C'est après le restore sinon vous allez à chaque boucle revenir au début de l'étiquette avec un index à 0. (Piège à con)

Data permet aussi de mémoriser des valeur numérique. Exemple :

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
Restore E_Data
 
For X=0 to 5
 Read N
 Print N
Next
 
E_data:
Data 52,45,6000
Data 84564,412451,754125



Cette fois si, N ne porte pas le $ car ce n'est pas une chaine.

Attention si c'est des valeurs/variable codé sur 32 bits (des longs), il faut bien utiliser le sigle & à la fin de la variable.
n&

Datalong et Dataint
Si vous voulez (et ça sera souvent le cas) des donnée de type int ou long vous pouvez utiliser les Dataint et Datalong, cela marche pareil que les data simples. Pour lire ce type de data c'est tous simplement Readint et Readlong. Exemple avec notre suite numérique.

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
Restore E_Data
 
For X=0 to 5
 Readint N
 Print N
Next
 
E_data:
Dataint 52,45,6000
Dataint 84564,412451,754125



Note : A la place de Restore vous pouvez aussi utiliser Reload. Cela fait la même chose

C'est avec les Data que vous allez mémoriser dans la rom de votre cartouche les donnés brutes de votre jeu, comme l'agencement d'un niveau. Regardez un peu ce petit morceau de data pour illustrer l'exemple :


Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
 
E_Map:
 
Data 1,1,1,1,1,1,1,1,1,1,1,1
Data 1,0,0,0,0,0,0,0,1,0,0,1
Data 1,0,0,0,1,0,2,0,1,0,0,1
Data 1,0,0,0,1,0,0,0,0,0,0,1
Data 1,1,1,0,1,1,1,1,1,1,1,1
Data 1,0,0,0,0,0,0,0,0,0,0,1
Data 1,0,0,0,0,0,0,0,0,0,0,1
Data 1,0,0,0,1,1,1,1,1,1,1,1
Data 1,0,0,0,0,0,0,0,0,0,0,1
Data 1,0,0,0,0,0,0,0,0,0,0,1
Data 1,1,1,1,1,1,1,1,1,1,1,1
 
[/code
 
 
Des 0, des 1 et des 2 sur des lignes data. Chaque valeur numérique c'est un tile. Chaque ligne est une ligne horizontale.
Une zone de 12 tiles sur 11.
Je décide (arbitrairement pour l'exemple) que 0 c'est le sol, 1 le mur et 2 un coffre. Et j'a ma map !
Je dois maintenant aller chercher les données de la map pour la foutre en mémoire, et poser mes tiles en fonction de valeur tous simplement. Je vais juste vous montrer un morceau de code pour placer ça en mémoire !
 
 
 
[code]
 
Rem ******************************************************
Rem * Déclaration des variables et du tableau de mémoire *
Rem ******************************************************
 
Dim T_Ram_MAP(12,11) As Integer
Local ID_MAP As Integer,X As Integer, Y As Integer
 
 
Rem *************************
Rem * Se brancher sur E_MAP *
Rem *************************
Restore E_Map
 
Rem *******************************************************************************
Rem * Deux boucle pour lecteur et mémorisation dans le tableau de la valeur voulu *
Rem *******************************************************************************
 
For Y=0 To 10
For X=0 To 11
        Read ID_MAP
        T_Ram_Map(X,Y)=ID_MAP
 
Next
Next
 
Rem ************************
Rem * Lecteur de T_Ram_map *
Rem ************************
 
For Y=0 To 10
For X=0 To 11
        Locate Y,X
        Print T_Ram_Map(X,Y)
 
Next
Next
 
 
 
 
Rem *************************
Rem * Les données de la rom *
Rem *************************
 
E_Map:
Data 1,1,1,1,1,1,1,1,1,1,1,1
Data 1,0,0,0,0,0,0,0,1,0,0,1
Data 1,0,0,0,1,0,2,0,1,0,0,1
Data 1,0,0,0,1,0,0,0,0,0,0,1
Data 1,1,1,0,1,1,1,1,1,1,1,1
Data 1,0,0,0,0,0,0,0,0,0,0,1
Data 1,0,0,0,0,0,0,0,0,0,0,1
Data 1,0,0,0,1,1,1,1,1,1,1,1
Data 1,0,0,0,0,0,0,0,0,0,0,1
Data 1,0,0,0,0,0,0,0,0,0,0,1
Data 1,1,1,1,1,1,1,1,1,1,1,1
 
 
 



image

Voila, nous en avons fini avec les datas pour cette fois si. Vous savez quoi ? Avec tous ça vous êtes capable de débuter la création de petit jeu ou de moteur de jeu ! Le prochaine article sera un déplacement case par case d'un sprite avec collision contre les murs, Et vous savez quoi ? A l'heure actuel vous avez tout en main pour faire ça !


Aucun commentaire n'a été posté pour le moment.

Suite à de nombreux abus, le post en invités a été désactivé. Veuillez vous inscrire si vous souhaitez participer à la conversation.

Haut de page

Merci de ne pas reproduire le contenu de ce site sans autorisation.
Contacter l'équipe - Mentions légales

Plan du site

Communauté: Accueil | Forum | Chat | Commentaires | News | Flash-news | Screen de la semaine | Sorties | Tests | Gaming-Live | Interviews | Galerie | OST | Blogs | Recherche
Apprendre: Visite guidée | RPG Maker 95 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker MV | Tutoriels | Guides | Making-of
Télécharger: Programmes | Scripts/Plugins | Ressources graphiques / sonores | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Au hasard | Notre sélection | Sélection des membres | Tous les jeux | Jeux complets | Le cimetière | RPG Maker 95 | RPG Maker 2000 | RPG Maker 2003 | RPG Maker XP | RPG Maker VX | RPG Maker VX Ace | RPG Maker MV | Autres | Proposer
Ressources RPG Maker 2000/2003: Chipsets | Charsets | Panoramas | Backdrops | Facesets | Battle anims | Battle charsets | Monstres | Systems | Templates
Ressources RPG Maker XP: Tilesets | Autotiles | Characters | Battlers | Window skins | Icônes | Transitions | Fogs | Templates
Ressources RPG Maker VX: Tilesets | Charsets | Facesets | Systèmes
Ressources RPG Maker MV: Tilesets | Characters | Faces | Systèmes | Title | Battlebacks | Animations | SV/Ennemis
Archives: Palmarès | L'Annuaire | Livre d'or | Le Wiki | Divers