chats.py

Created by loic-azavant

Created on May 24, 2022

7.61 KB

un jeu de chat sur un platformer, attention quand trop de touches sont pressées enmême temps le jeu bug un peu


from kandinsky import *
from ion import *
from time import *
from random import *

Map=[[0,300,60,260],[60,360,60,200],[120,420,400,140],[520,380,80,180],[600,340,80,220],[680,300,80,260],[760,260,80,300],[840,200,40,360],[640,200,60,60],[580,140,60,140],[480,140,60,160],[380,140,60,220],[280,180,60,60],[200,220,60,60],[100,260,60,60],[80,160,60,60],[40,100,40,120],[160,60,80,40],[300,40,80,40],[440,20,80,40],[580,40,80,40],[700,80,60,60],[780,140,40,60],[880,0,150,660],[-150,0,150,660]]


playerInfo=[[400,120,(255,0,0),KEY_ZERO,KEY_DOT,KEY_FOUR,True,False,32,-1,False,10],[500,120,(200,200,0),KEY_ANS,KEY_EXE,KEY_DIVISION,True,False,32,-1,False,10],[600,120,(0,0,150),KEY_LEFT,KEY_RIGHT,KEY_UP,True,False,32,-1,False,10]]
#[x, y, couleur, gauche, droite saut, sautAutorise, jump, vJump, vGravity, gravity, vitesse]

numberOfPlayer=2
chercheur=randint(0,numberOfPlayer-1)
a=0

playerInfo[chercheur][11]=10

timer=0

nbrPlayerTouche=0
peutTouche=True

xPlayer=320
yPlayer=0
playerColor=(170,32,0)

backColor=(0,150,250)

colorTerre=(120,50,0)
colorHerbe=(0,160,50)
colorCaillou=(70,70,70)

xMap=-playerInfo[chercheur][0]+160
yMap=-playerInfo[chercheur][1]+110

vJump=32
jump=False
sautAutorise=True

vGravity=-1
gravity=False


hitBoxValue=False

def player():
  for i in range(numberOfPlayer):
    fill_rect(playerInfo[i][0]+xMap,playerInfo[i][1]+yMap,10,10,playerInfo[i][2])

def cachePlayer(a):
  fill_rect(playerInfo[a-1][0]+xMap,playerInfo[a-1][1]+yMap,10,10,backColor)
  
def sol(b,c,d,e):
  if c<450:
    fill_rect(xMap+b,yMap+c,d,10,colorHerbe)
    if e>10 and e+c<450:
      fill_rect(xMap+b,yMap+c+10,d,e-10,colorTerre)
    elif e>10:
      fill_rect(xMap+b,yMap+c+10,d,e-(c+e-450)-10,colorTerre)
      fill_rect(xMap+b,yMap+c+(e-(c+e-450)),d,c+e-450,colorCaillou)
  elif c>450:
    fill_rect(xMap+b,yMap+c,d,e,colorCaillou)
    
    
def mapp():
  for i in range(len(Map)):
    sol(Map[i][0],Map[i][1],Map[i][2],Map[i][3])

def hitBoxVertical(a):
  for i in range(len(Map)):
    if playerInfo[a][1]+10<=Map[i][1] or playerInfo[a][1]>=Map[i][1]+Map[i][3] or playerInfo[a][0]>=Map[i][0]+Map[i][2] or playerInfo[a][0]+10<=Map[i][0]:
      hitBoxValue=False
    else:
      hitBoxValue=True
      break
  return hitBoxValue

def hitBoxDroite(a):
  for i in range(len(Map)):
    if playerInfo[a][1]+10<=Map[i][1] or playerInfo[a][1]>=Map[i][1]+Map[i][3] or playerInfo[a][0]>=Map[i][0]+Map[i][2]-5 or playerInfo[a][0]+10<Map[i][0]:
      hitBoxValue=True
    else:
      hitBoxValue=False
      break
  return hitBoxValue

def hitBoxGauche(a):
  for i in range(len(Map)):
    if playerInfo[a][1]+10<=Map[i][1] or playerInfo[a][1]>=Map[i][1]+Map[i][3] or playerInfo[a][0]>Map[i][0]+Map[i][2] or playerInfo[a][0]+10<=Map[i][0]+5:
      hitBoxValue=True
    else:
      hitBoxValue=False
      break
  return hitBoxValue

def surLeSol(a):
  for i in range(len(Map)):
    if playerInfo[a][1]+10==Map[i][1] and playerInfo[a][0]+9>Map[i][0] and playerInfo[a][0]<Map[i][0]+Map[i][2]:
      hitBoxValue=True
      break
    else:
      hitBoxValue=False
  return hitBoxValue

def deplacement(a):
  if a=="gauche":
    for i in range(len(Map)):
      fill_rect(xMap+Map[i][0]-10,yMap+Map[i][1],10,Map[i][3],backColor)
  if a=="droite":
    for i in range(len(Map)):
      fill_rect(xMap+Map[i][0]+Map[i][2],yMap+Map[i][1],10,Map[i][3],backColor)
  if a=="bas":
    for i in range(len(Map)):
      fill_rect(xMap+Map[i][0],yMap+Map[i][1]+Map[i][3],Map[i][2],10,backColor)
  if a=="haut":
    for i in range(len(Map)):
      fill_rect(xMap+Map[i][0],yMap+Map[i][1]-10,Map[i][2],10,backColor)



fill_rect(0,0,320,222,backColor)
  



mapp()    
player()

while True:  

  for j in range(numberOfPlayer):
    if keydown(playerInfo[j][3]) and hitBoxGauche(j):
      playerInfo[j][0]-=playerInfo[j][11]
      fill_rect(playerInfo[j][0]+xMap+playerInfo[j][11],playerInfo[j][1]+yMap,10,10,backColor)
    if keydown(playerInfo[j][4]) and hitBoxDroite(j):
      playerInfo[j][0]+=playerInfo[j][11]
      fill_rect(playerInfo[j][0]+xMap-playerInfo[j][11],playerInfo[j][1]+yMap,10,10,backColor)


  for j in range(numberOfPlayer):
    if keydown(playerInfo[j][5]) and playerInfo[j][6]==True:
      playerInfo[j][7]=True
      playerInfo[j][8]=32
      playerInfo[j][6]=False

  for j in range(numberOfPlayer):
    if playerInfo[j][7]==True:
      cachePlayer(j+1)
      playerInfo[j][1]-=int(playerInfo[j][8])
      if playerInfo[j][8]>1:
        playerInfo[j][8]=playerInfo[j][8]/2
        if hitBoxVertical(j):
          while hitBoxVertical(j):
            playerInfo[j][1]+=1
          playerInfo[j][7]=False
          playerInfo[j][8]=32
      elif playerInfo[j][8]==1:
        playerInfo[j][8]=-1
      elif -32<playerInfo[j][8]<=-1:
        playerInfo[j][8]=playerInfo[j][8]*2
        if hitBoxVertical(j):
          while hitBoxVertical(j):
            playerInfo[j][1]-=1
          playerInfo[j][7]=False
          playerInfo[j][8]=32
      elif playerInfo[j][8]==-32:
        while hitBoxVertical(j):
          playerInfo[j][1]-=1
        if surLeSol(j):
          playerInfo[j][8]=32
        else:
          playerInfo[j][9]=playerInfo[j][8]
          playerInfo[j][10]=True
          playerInfo[j][6]=False
        playerInfo[j][7]=False
      player()

  for j in range(numberOfPlayer):
    if not hitBoxVertical(j) and playerInfo[j][7]==False and not surLeSol(j):
      playerInfo[j][10]=True
      playerInfo[j][6]=False
    
  for j in range(numberOfPlayer):
    if playerInfo[j][10]==True:
      cachePlayer(j+1)
      playerInfo[j][1]-=playerInfo[j][9]
      if playerInfo[j][9]>-128:
        playerInfo[j][9]=playerInfo[j][9]*2
      if hitBoxVertical(j):
        while hitBoxVertical(j):
          playerInfo[j][1]-=1
        playerInfo[j][10]=False
        playerInfo[j][9]=-1
        playerInfo[j][8]=32
      player()

  for j in range(numberOfPlayer):
    if surLeSol(j):
      playerInfo[j][6]=True
    else:
      playerInfo[j][6]=False
  
  if playerInfo[chercheur][0]+xMap<140:
    xMap+=10
    deplacement("gauche")
    mapp()
    for i in range(numberOfPlayer):
      fill_rect(playerInfo[i][0]-10+xMap,yMap+playerInfo[i][1],10,10,backColor)
  if playerInfo[chercheur][0]+xMap>180:
    xMap-=10
    deplacement("droite")
    mapp()
    for i in range(numberOfPlayer):
      fill_rect(playerInfo[i][0]+10+xMap,playerInfo[i][1]+yMap,10,10,backColor)
  if playerInfo[chercheur][1]+yMap>170:
    yMap-=10
    deplacement("bas")
    mapp()
    for i in range(numberOfPlayer):
      fill_rect(playerInfo[i][0]+xMap,playerInfo[i][1]+10+yMap,10,10,backColor)
  if playerInfo[chercheur][1]+yMap<50:
    yMap+=10
    deplacement("haut")
    mapp()
    for i in range(numberOfPlayer):
      fill_rect(playerInfo[i][0]+xMap,playerInfo[i][1]-10+yMap,10,10,backColor)

  for i in range(numberOfPlayer):
    if not (playerInfo[i][0]>playerInfo[chercheur][0]+10 or playerInfo[i][0]+10<playerInfo[chercheur][0] or playerInfo[i][1]>playerInfo[chercheur][1]+10 or playerInfo[i][1]+10<playerInfo[chercheur][1]) and i!=chercheur and peutTouche==True:
      peutTouche=False
   #   playerInfo[chercheur][11]=5
      chercheur=i
     # playerInfo[chercheur][11]=10
      break
  
  a=numberOfPlayer
  for i in range(numberOfPlayer):
    if playerInfo[i][0]>playerInfo[chercheur][0]+10 or playerInfo[i][0]+10<playerInfo[chercheur][0] or playerInfo[i][1]>playerInfo[chercheur][1]+10 or playerInfo[i][1]+10<playerInfo[chercheur][1]:
      a-=1
  if a==1:
    peutTouche=True


  player()
  fill_rect(playerInfo[chercheur][0]+xMap+3,playerInfo[chercheur][1]+yMap+3,4,4,(255,255,255))
  sleep(0.03)
  
  timer+=1
    
  if timer>=1000:
    draw_string("Le joueur   a perdu",50,50)
    draw_string(str(chercheur+1),150,50)
    break
    
  draw_string(str(timer),5,5,(255,255,255),backColor)

During your visit to our site, NumWorks needs to install "cookies" or use other technologies to collect data about you in order to:

With the exception of Cookies essential to the operation of the site, NumWorks leaves you the choice: you can accept Cookies for audience measurement by clicking on the "Accept and continue" button, or refuse these Cookies by clicking on the "Continue without accepting" button or by continuing your browsing. You can update your choice at any time by clicking on the link "Manage my cookies" at the bottom of the page. For more information, please consult our cookies policy.