Apprendre


Vous êtes
nouveau sur
Oniromancie?

Visite guidée
du site


Découvrir
RPG Maker

RM 95
RM 2000/2003
RM XP
RM VX/VX Ace
RM MV

Apprendre
RPG Maker

Guides
Tutoriels
Making-of

Dans le
Forum

Section Entraide

Jeux: Cure Seekers / Jeux: Princesse Emmentale / Interviews: Ccd-Tof / Sorties: dans mon quartier, remasterisé (...) / News: Alex d'Or 2020 : Les résultats ! / Chat

Bienvenue
visiteur !




publicité RPG Maker!

Statistiques

Liste des
membres


Contact

Mentions légales

155 connectés actuellement

10841865 visiteurs
depuis l'ouverture

1047 visiteurs
aujourd'hui



Barre de séparation

Partenaires

Indiexpo

Akademiya RPG Maker

Hellsoft

Planète Glutko

RPG Maker Détente

Le Studio du Chat Vert

RPG Maker - La Communauté

Tous nos partenaires

Devenir
partenaire



#10 Programmer la mégadrive , l'utilisation des pads

Vous allez apprendre à gérer un pad sur la mégadrive.

Ecrit par Monos le 30/07/2017

Chapitre 9 :Je Commande , tu obéis !
Aller on va prendre en main cette megadrive. Jusque la, cette console exécute le code tous seul comme un grand, mais il va falloir lui donner des ordres en directe.

Pour cela on va utiliser un périphérique branché sur cette console. Une manette de jeu. C'est ce qui permet donc de donner des ordres à cette bestiole.

Une manette standard de mégadrive c'est un pad avec 4 directions.

Haut
Bas
Gauche
Droite

Les diagonales pour information, c'est juste le cumule de deux directions. Le pad possède aussi un bouton Start et trois boutons d'action nous allons dire. (A-B-C)

Il existe aussi des pad à 6 Boutons (Z X Y) et avec un bouton "mode". Vous savez quoi ? Second Basic permet d'utiliser tous ça.

Pour récupérer la touche utilisé, c'est simple il y a une fonction.
La fonction Joypad(id_pad)
id_pad est le port de la machine. (0 ou 1). 0 c'est le player 1 et 1 c'est le player 2.

fait un test !

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
 local A as integer
while 1
A=joypad(0)
print A
 
wend
 



Vous pouvez maintenant tester la pad avec l'emulateur ce qui donne pour le pad 0 :

Haut = 1
Bas = 2
Gauche = 4
Droite = 8

A=64
B=16
C=32

Start=128

Si vous avez configuré en 6 boutons.

Z =1024
X = 512
Y = 256

Mode : 2048

Ceci dit c'est pas trop la bonne méthode pour tester si une touche est utilisé. Il faut mieux utiliser les "bits"

voici un exemple concret.




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
 local A as integer
Local A As Integer
While 1
 
  A=JoyPad(0)
  If A.0 Then
    Print "touche Haut"
  ElseIf A.1 Then
    Print "touche Bas"
  ElseIf A.2 Then
    Print "touche Gauche"
  ElseIf A.3 Then
    Print "touche Droite"
  ElseIf A.4 Then
    Print "touche B"
  ElseIf A.5 Then
    Print "touche C"
  ElseIf A.6 Then
    Print "touche A"
  ElseIf A.7 Then
    Print "touche Start"
  ElseIf A.8 Then
    Print "touche  Z"
  ElseIf A.9 Then
    Print "touche  Y"
  ElseIf A.10 Then
    Print "touche  X"
  ElseIf A.11 Then
    Print "touche  Mode"
  Else
    Print "rien"
  EndIf
 
Wend
 



Et voila vous avez un belle exemple et une belle routine pour gérer le pad !
Maintenant nous allons déplacer notre sprite avec le pad ! et bloquer le sprite pour pas qu'il sorte de l'écran.

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
 
 
Local sp1 As Integer,X As Integer,Y As Integer,A As Integer
LoadTiles E_Tiles,4,256
X=128
Y=128 
 
sp1=AddSprite(2,2)
 
PropSprite sp1,256,0
MoveSprite sp1,X,129
While 1
Locate 10,0
Print y
 
A=JoyPad(0)
If a.3 And X<432 Then
X=X+1
ElseIf a.2 And x>128 Then
X=X-1
ElseIf a.0 And Y>128 Then
Y=Y-1
ElseIf a.1  And y<352 Then
Y=Y+1
End If
 
 
 
        MoveSprite sp1,X,Y
     
        Sleep 1,TvBlank 
Wend
 
 
 
E_Tiles:
Rem Tile A
DataLong $11111111
DataLong $10000000
DataLong $10000000
DataLong $10000000
DataLong $10000000
DataLong $10000000
DataLong $10000000
DataLong $10000000
 
DataLong $10000000
DataLong $10000000
DataLong $10000000
DataLong $10000000
DataLong $10000000
DataLong $10000000
DataLong $10000000
DataLong $11111111
 
DataLong $11111111
DataLong $00000001
DataLong $00000001
DataLong $00000001
DataLong $00000001
DataLong $00000001
DataLong $00000001
DataLong $00000001
 
 
 
DataLong $00000001
DataLong $00000001
DataLong $00000001
DataLong $00000001
DataLong $00000001
DataLong $00000001
DataLong $00000001
DataLong $11111111
 
 



Explication :

Citation:

X=128
Y=128


Nous savons que pour les sprites, il y a un décalage de 128 points en haut et à gauche ! donc on va mémoriser la valeur 128 à X et à Y.

Citation:


While 1
Wend



Je revient sur cette boucle. While 1 veux dire , boucle toujours !
C'est mal en programmation les boucles infinis ! Sauf que la nous sommes sur console. Et une console on quite le programme seulement quand nous plaçons l’interrupteur power sur off de la bête !

Citation:

If a.3 And X<432 Then
X=X+1


Je vais expliquer seulement cette exemple.
le .3 test donc le 3em bit de A (Bon on verra ça un autre jour) en gros c'est si la touche Droite est utilisé.
Que ce passe t'il ? On ajoute tout simplement 1 à X donc on va le faire déplacer à droite ! A la condition que X est inférieure à 432. 432 c'est la limite de l'écran !

X=X-1 fait déplacer le sprite à Gauche.
Y=Y-1 (oui -1) le fait monter en Haut.
Y=Y-1 le fait descendre en bas.

C'est vraiment simple non ?

A oui pour pouvoir faire les diagonal, il ne faut pas faire des ElseIf mais de simple If qui permet de vraiment tester toutes les touches en même temps !

Portion de code : Tout sélectionner

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
If a.3 And X<432 Then
X=X+1
end if
 
If a.2 And x>128 Then
X=X-1
end if
 
ElseIf a.0 And Y>128 Then
Y=Y-1
end if
 
If a.1  And y<352 Then
Y=Y+1
End If
 
 



Citation:

MoveSprite sp1,X,Y


On affiche le Sprite1 à la cordooné X et Y.
X et Y sont des valeurs contenues dans les variables adéquate !

Voila, vous savez poser un sprites, le faire déplacer avec vote pad ! Vous trouvez pas que ça manque un peu de couleur ? Si, ba c'est au programme de la prochaine leçon !

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 | Articles perso | 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 | Packs de ressources | Midis | Eléments séparés | Sprites
Jeux: Au hasard | Notre sélection | Sélection des membres | Jeux complets | Tous les jeux | 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