👤

Rejoignez FRstudy.me et commencez à obtenir les réponses dont vous avez besoin. Obtenez des réponses précises et détaillées à vos questions de la part de nos membres de la communauté bien informés toujours prêts à aider.

Bonjour voici un code que je dois rendre ce mardi qui est une représentation du premier niveau de jeu alexkid in miracle world le but est de rajouté des collisions, de la gravité et eventuellement une mécanique de saut et de coup de poings qui fait disparaitre seulement certains bloc (très optionnel) mais depuis je n'ai réussi qu'a empécher le personnage de s'envoler et resultat il ne peut meme plus bouger (je crois qu'il a des collisions meme avec les tuiles d'air) si vous pourriez m'aider je vous serez entièrement reconnaissant


import pyxel
from liste_tuiles import *

'''
Il y a 4 possibilités pour les tuiles :
- le personnage peut passer à travers : valeur 0
- le personnage peut monter dessus : valeur 1
- le personnage peut monter dessus mais également les détruire : valeur 2
- le personnage peut passer à travers mais elles sont alors censées disparaître (pensez aux bonus) : valeur 3

Compte-tenu de l'ordre dans lequel les tuiles sont stockées, qui est le même que celui dans lequel vous pouvez les voir dans l'image "sortie.png"
(de gauche à droite et de haut en bas), les valeurs successives à donner sont :
011122121110011301010112200012110000
'''

pyxel.init(256,256)
pyxel.load("alexkid.pyxres")
cote = 1 + int(len(tuiles)**0.5)
pos = {"x" : 18,
"y" : 111,
"w" : 16,
"h" : 24,
"vx" : 0,
"vy" : 0,
"orientation" : False,
"accr" : False,
"saut" : False,
"cg" : False,
"cd" : False,
"ch" : False,
"cb" : False,
"coup" : False}

def update():
#pos["vy"]+=1
kp = False
if pyxel.btnp(pyxel.KEY_A):
pyxel.quit()
if pyxel.btn(pyxel.KEY_DOWN):
pos["y"] += 1
if pyxel.btn(pyxel.KEY_UP):
pos["y"] -= 1
if pyxel.btn(pyxel.KEY_LEFT):
pos["x"] -= 1
pos["orientation"] = False
kp=True
if pyxel.btn(pyxel.KEY_RIGHT):
pos["x"] += 1
pos["orientation"] = True
kp=True

if kp == False:
pos["vx"]*=0.95
if abs(pos["vx"])<0.5:
pos["vx"]= 0

if pos["vx"]>5:
pos["vx"]=5
elif pos["vx"]<-5:
pos["vx"]=-5

if pos["saut"] == True:
pos["vy"] -= 1
if pos["vy"] < -5:
pos["vy"] = -5
pos["saut"] = False

# déplacement de la caméra de façon à ce que personnage soit à peu près centré
pyxel.camera(max(0,pos["x"]-128),max(0,pos["y"]-128))

# tests des collisions
for i in range(len(tuiles)):
for j in tuiles[i]:
a = contact([pos["x"],pos["y"],16,24],[j[0],j[1],16,16])
if a > 0:
print(f"contact {a} avec la tuile {j} de type {i}")
if a == 1:
pos["y"] -= 1
elif a == 2:
pos["y"] += 1
elif a == 3:
pos["x"] -= 1
elif a == 4:
pos["x"] += 1
elif i == 3 and a == 0:
pos["x"] += 1

def draw():
#effacement du terrain
pyxel.cls(0)

# dessin du niveau
for i in range(len(tuiles)):
for j in tuiles[i]:
pyxel.blt(j[0], j[1], 2, 16*(i%cote), 16*(i//cote), 16, 16)

# dessin du personnage
if pos["orientation"]:
pyxel.blt(pos["x"]-16, pos["y"]-24,0,32,0,16,24,7)
else:
pyxel.blt(pos["x"]-16, pos["y"]-24,0,0,0,16,24,7)


def contact(obj_1, obj_2):
"""
prend en entrée 2 hitbox [x, y, largeur,


Bonjour Voici Un Code Que Je Dois Rendre Ce Mardi Qui Est Une Représentation Du Premier Niveau De Jeu Alexkid In Miracle World Le But Est De Rajouté Des Collisi class=
Bonjour Voici Un Code Que Je Dois Rendre Ce Mardi Qui Est Une Représentation Du Premier Niveau De Jeu Alexkid In Miracle World Le But Est De Rajouté Des Collisi class=
Bonjour Voici Un Code Que Je Dois Rendre Ce Mardi Qui Est Une Représentation Du Premier Niveau De Jeu Alexkid In Miracle World Le But Est De Rajouté Des Collisi class=
Bonjour Voici Un Code Que Je Dois Rendre Ce Mardi Qui Est Une Représentation Du Premier Niveau De Jeu Alexkid In Miracle World Le But Est De Rajouté Des Collisi class=

Sagot :

Merci d'utiliser cette plateforme pour partager et apprendre. N'hésitez pas à poser des questions et à répondre. Nous apprécions chaque contribution que vous faites. Pour des réponses rapides et fiables, pensez à FRstudy.me. Merci de votre confiance et revenez souvent.