Author Topic: remplacer des tiles  (Read 7271 times)

0 Members and 1 Guest are viewing this topic.

Offline Belette furtive

  • LV1 Newcomer (Next: 20)
  • *
  • Posts: 17
  • Rating: +0/-0
    • View Profile
remplacer des tiles
« on: November 09, 2011, 11:58:55 am »
Bonjour à tous. Je tente de faiire un programme où le joueur doit ramasser des clés pour débloquer des portes et supprimer les ennemis.
J'ai fait la map, une touche pour frapper et ai placé  des clefs sur la map.
En fait, le problème, c'est que je ne sais pas comment supprimer les portes quand on passe dessus sauf en stockant le numéro de la tile du sol dans le nombre d'octet de l'image de la porte après le pointeur.
Cette technique ne marche que pour une porte en particulier, comment faire pour que cela fonctionne quelle que soit la porte ?

Offline Hayleia

  • Programming Absol
  • Coder Of Tomorrow
  • LV12 Extreme Poster (Next: 5000)
  • ************
  • Posts: 3367
  • Rating: +393/-7
    • View Profile
Re: remplacer des tiles
« Reply #1 on: November 09, 2011, 12:07:47 pm »
La porte doit etre supprimée quand tu marche dessus avec une clé
ou
Toutes les portes doivent etre supprimées quand tu as une clé
?

Dans le deuxieme cas, tu peux utiliser une boucle for du genre
For(r1,0 ou 1,taille de la map)
  .le 0 ou 1 depend de comment tu fais ta tilemap
  If {...}=porte
    rien→{...}
  End
End


Dans le premier cas, je pense que tu peux accéder a l'octet qui t'interesse en faisant {Y/(largeur map)*(largeur map)+X} ou X et Y sont les coordonnées du personnage mais cela n'est pas sur. Il ya peut etre une faute de calcul.
« Last Edit: November 09, 2011, 12:16:10 pm by Hayleia »
I own: 83+ ; 84+SE ; 76.fr ; CX CAS ; Prizm ; 84+CSE
Sorry if I answer with something that seems unrelated, English is not my primary language and I might not have understood well. Sorry if I make English mistakes too.

click here to know where you got your last +1s

Offline Belette furtive

  • LV1 Newcomer (Next: 20)
  • *
  • Posts: 17
  • Rating: +0/-0
    • View Profile
Re: remplacer des tiles
« Reply #2 on: November 11, 2011, 07:16:29 am »
Plutôt le 1er cas.
En fait, je voudrais que quand on a au moins une clé et que on passe sur une porte, elle soit supprimée (ça je sais le faire)
mais aussi que cela fonctionne quelle que soit la porte et sa position sur la carte.

Offline Wellen

  • LV4 Regular (Next: 200)
  • ****
  • Posts: 118
  • Rating: +7/-2
    • View Profile
Re: remplacer des tiles
« Reply #3 on: November 11, 2011, 08:03:42 am »
Ce qu'il faut faire, comme le dit Hayleia (t'as vu jme suis pas trompé :P), c'est réussir à trouver une relation entre les coordonnées de la porte sur laquelle est le personnage (donc les coordonnées du personnage), la largeur et la hauteur de la map, pour accéder au bon octet. Tu cherches d'abord à savoir dans quelle ligne de ton tableau tu te trouves, puis tu y ajoutes ta coordonnée en colonnes (X)
ça doit plutôt être si je ne me trompe pas :
[ ( Y/(hauteur) ) * (largeur+1) ] + X

-/...././/--./.-/--/.
I'm french, so please feel free to correct my bad english, it'd help me a lot ;)
Spoiler For Feat. Loulou54:
Spoiler For Projects:
Spoiler For Axe:
Ti-Lock : Lock your calc before turning it off               [XXXXXXXX--] 80%
Spoiler For Ti-Basic:
Spoiler For Soko-Ti, a sokoban game in Ti-Basic:

Spoiler For Memory:

Downloads here.

Offline Belette furtive

  • LV1 Newcomer (Next: 20)
  • *
  • Posts: 17
  • Rating: +0/-0
    • View Profile
Re: remplacer des tiles
« Reply #4 on: November 11, 2011, 09:02:43 am »
Donc, pour une map de 36*16 Tiles avec le dessin du sol qui porte le numéro 0, je devrais avoir : 
0→{((B/16)*(36+1))+A}
Où A et B sont les coordonnées de mon personnage ?

Offline Wellen

  • LV4 Regular (Next: 200)
  • ****
  • Posts: 118
  • Rating: +7/-2
    • View Profile
Re: remplacer des tiles
« Reply #5 on: November 11, 2011, 09:22:20 am »
Si ma méthode est juste, oui :)
je te conseille quand même de faire des essais (avec des emplacement extrêmes genre les bords de maps, et des emplacements dont tu connais l'emplacement exact dans les octets, et de comparer avec ce que ça donne) et de me dire si je me suis planté ^^

Après, tu peux évidemment optimiser, c'était pour que ça soit clair toutes ces horribles parenthèses
-/...././/--./.-/--/.
I'm french, so please feel free to correct my bad english, it'd help me a lot ;)
Spoiler For Feat. Loulou54:
Spoiler For Projects:
Spoiler For Axe:
Ti-Lock : Lock your calc before turning it off               [XXXXXXXX--] 80%
Spoiler For Ti-Basic:
Spoiler For Soko-Ti, a sokoban game in Ti-Basic:

Spoiler For Memory:

Downloads here.

Offline Belette furtive

  • LV1 Newcomer (Next: 20)
  • *
  • Posts: 17
  • Rating: +0/-0
    • View Profile
Re: remplacer des tiles
« Reply #6 on: November 13, 2011, 11:37:09 am »
Je pense que tu t'es planté  ;D

J'ai fait plusieurs essais en modifiant les coordonnées, la formule, les variables utilisées... mais rien ne marche. :banghead:
Par contre, ça fait toujours un changement mais jamais sur les bon octets.

Voilà le code si ça peut aider.
Code: [Select]
.GAU

0→{L₁+2}→{L₁+5}→{L₁+8}→{L₁+11}

2→{L₁}
1→{L₁+1}
21→{L₁+3}
1→{L₁+7}

11→{L₁+4}
14→{L₁+10}
34→{L₁+6}
25→{L₁+9}

.emplacemennt des clés


0→B→A
.Coordonnées du personnage sur la carte

1→U
2→V
.Coordonnées du personnage sur l'écran


0→Z
.Suivant la valeur de Z, un des 4 sprites de l'épée sera choisi


[000040FF40000000]→Pic3
[000002FF02000000]
[081C080808080808]
[1010101010381010]
.l'arme du personnage


[6142245868605050]→Pic2
[8642241A16060A0A]
[4C524C5EED8C1233]
[327A327AB73248CC]
.le personnage


Lbl DPL
Repeat getKey(15)
If getKey(3)
If (sub(ZIP,A+U+1,B+V)→r₁=0
0→Z
If A<24 and (U=5)
A+1→A
ElseIf U<11
U+1→U
End
ElseIf r₁=2
sub(POR)
End
End
If getKey(2) and (sub(ZIP,A+U-1,B+V)=0
1→Z
If (U=5) and (A>0)
A-1→A
ElseIf U>0
U-1→U

End
End
If getKey(1) and (sub(ZIP,A+U,B+V+1)=0
2→Z
If B<8 and (V=4)
B+1→B
ElseIf V<7
V+1→V

End
ElseIf getKey(4) and (sub(ZIP,A+U,B+V-1)=0
3→Z
If B>0 and (V=4)
B-1→B
ElseIf V>0
V-1→V
End
End


DispGraph
ClrDraw
sub(TLM
sub(CLE)
Pt-Off(U*8,V*8,Z*8+Pic2

If getKey (54)
If Z=0
8→E
0→S→L
ElseIf Z=1
-8→E
0→S
1→L
ElseIf Z=2
0→E
8→S
2→L
ElseIf Z=3
0→E
-8→S
3→L
End
Pt-On(U*8+E,V*8+S,L*8+Pic3
End
End
Return
.la getkey 54 gère l'attaque


[0000000000000000]→Pic1
.le sol

[463971918A858989]
.les murs

[2424241818242424
.les barrieres

[111111111111111111111111111111111111]→GDB1
[100100000000000000000000000000010001]
[100100100111100000000000000000010001]
[100100100111111100111001111001210001]
[100100100000000000110000000001010001]
[100100100000000000111001100001010001]
[100200111111111100000001100001010001]
[100200001110000100000001100001000001]
[100100001110000100111101100111100001]
[100100000020000000110001100000111111]
[100100000020000000110111111100000001]
[100100001110000100110011000000000001]
[100101111110000100111111010011111001]
[100101111111110100000000100011111001]
[100100000000000100000000100111111001]
[111111111111111111111111111111111111]


Lbl CLE
0→r₅
For(r₁,0,3)
{r₁*3+L₁→r₄}-A→r₂
{r₄+1}-B→r₃
If r₂=U and (r₃=V) and ({r₄+2}=0)
{r₄+2}+1→{r₄+2}
End
!If {r₄+2}
If r₂<12 and (r₃<8
Pt-Off(r₂*8,r₃*8,[0000E0BFE5000000]
End
Else
r₅+1→r₅
End
End
Return

.Ce label gère les clés


Lbl POR
0→{((B/16)*(36+1))+A+GDB1}
Return
.Celui ci doit gérer les portes


Lbl TLM
For(Y,0,8
For(X,0,11
sub(ZIP,X+A,Y+B)→r₁
Pt-On(X*8,Y*8,r₁*8+Pic1)
End
End
DispGraph
Return

Lbl ZIP
r₂*36+r₁→r₁
{r₁/2+GDB1}→r₂
If r₁^2
r₂^16
Else
r₂/16
End

Offline annoyingcalc

  • LV10 31337 u53r (Next: 2000)
  • **********
  • Posts: 1950
  • Rating: +140/-72
  • Found in Eclipse.exe
    • View Profile
Re: remplacer des tiles
« Reply #7 on: November 13, 2011, 11:53:07 am »
Bienvenue S'il vous plaît présenter votre auto http://www.omnimaga.org/index.php?board=10.0
This used to contain a signature.

Offline Hayleia

  • Programming Absol
  • Coder Of Tomorrow
  • LV12 Extreme Poster (Next: 5000)
  • ************
  • Posts: 3367
  • Rating: +393/-7
    • View Profile
Re: remplacer des tiles
« Reply #8 on: November 13, 2011, 01:13:35 pm »
Bienvenue S'il vous plaît présenter votre auto http://www.omnimaga.org/index.php?board=10.0
O.O
...votre auto...
XD
Je pense qu'il y a un probleme de traduction pour "yourself". C'est evidemment toi qu'il faut présenter, pas ton auto, mais je pense que tout le monde avait compris.
I own: 83+ ; 84+SE ; 76.fr ; CX CAS ; Prizm ; 84+CSE
Sorry if I answer with something that seems unrelated, English is not my primary language and I might not have understood well. Sorry if I make English mistakes too.

click here to know where you got your last +1s

Offline Belette furtive

  • LV1 Newcomer (Next: 20)
  • *
  • Posts: 17
  • Rating: +0/-0
    • View Profile
Re: remplacer des tiles
« Reply #9 on: November 13, 2011, 01:14:10 pm »
Voilà qui est fait (bien que avec un peu retard).

PS: tout va bien, j'avais compris!
« Last Edit: November 13, 2011, 01:17:28 pm by Belette furtive »

Offline Hayleia

  • Programming Absol
  • Coder Of Tomorrow
  • LV12 Extreme Poster (Next: 5000)
  • ************
  • Posts: 3367
  • Rating: +393/-7
    • View Profile
Re: remplacer des tiles
« Reply #10 on: November 13, 2011, 01:21:13 pm »
Pour le retard, tout est relatif. Ma presentation n'est arrivée que vers les 30 posts XD
I own: 83+ ; 84+SE ; 76.fr ; CX CAS ; Prizm ; 84+CSE
Sorry if I answer with something that seems unrelated, English is not my primary language and I might not have understood well. Sorry if I make English mistakes too.

click here to know where you got your last +1s

Offline Belette furtive

  • LV1 Newcomer (Next: 20)
  • *
  • Posts: 17
  • Rating: +0/-0
    • View Profile
Re: remplacer des tiles
« Reply #11 on: November 13, 2011, 01:43:04 pm »
Quelle rapidité exceptionnelle !!

Offline annoyingcalc

  • LV10 31337 u53r (Next: 2000)
  • **********
  • Posts: 1950
  • Rating: +140/-72
  • Found in Eclipse.exe
    • View Profile
Re: remplacer des tiles
« Reply #12 on: November 13, 2011, 02:01:58 pm »
Bienvenue S'il vous plaît présenter votre auto http://www.omnimaga.org/index.php?board=10.0
O.O
...votre auto...
XD
Je pense qu'il y a un probleme de traduction pour "yourself". C'est evidemment toi qu'il faut présenter, pas ton auto, mais je pense que tout le monde avait compris.
Désolé je utiliser Google translate
This used to contain a signature.

Offline Hayleia

  • Programming Absol
  • Coder Of Tomorrow
  • LV12 Extreme Poster (Next: 5000)
  • ************
  • Posts: 3367
  • Rating: +393/-7
    • View Profile
Re: remplacer des tiles
« Reply #13 on: November 13, 2011, 02:19:57 pm »
Quelle rapidité exceptionnelle !!
En fait, moi personne ne m'a dit de me présenter D: donc j'ai du decouvrir le board par moi même, d'où la lenteur ;)

Désolé je utiliser Google translate
Yeah, we saw that XD
No, seriously, Google translate is understandable, and you wanted to help, so don't apologize for nothing :)
I own: 83+ ; 84+SE ; 76.fr ; CX CAS ; Prizm ; 84+CSE
Sorry if I answer with something that seems unrelated, English is not my primary language and I might not have understood well. Sorry if I make English mistakes too.

click here to know where you got your last +1s

Offline DJ Omnimaga

  • Now active at https://codewalr.us
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55821
  • Rating: +3151/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • DJ Omnimaga Music
Re: remplacer des tiles
« Reply #14 on: November 13, 2011, 11:17:12 pm »
Il est généralement préférable en anglais par contre de vérifier sa grammaire et son orthographe avant de traduire, sinon ça donne des résultats encore moins jolis :P
In case you are wondering where I went, I left Omni back in 2015 to form CodeWalrus due to various reasons explained back then, but I stopped calc dev in 2016 and am now mostly active on the CW Discord server at https://discord.gg/cuZcfcF


Bandcamp|Reverbnation|Facebook|Youtube|Twitter