the_snake_game.py

Created by antarctus

Created on November 07, 2021

5.07 KB

Une version amélioré (graphique) de “The_snake.py” aussi créée par moi.
Nécessite absolument ce module pour marcher. Alors voici un lien vers the_snake.py.
Les modes de jeu (une fois débloqué) se sélectionne avec les 6 boutons supérieurs de la calculatrice ou avec les flèches.
Un shop est disponible avec le bouton Shift .
Rejoignez le discord pour être au courant des dernières mise à jours : https://discord.gg/wNtEFdQgWD .
Ce programme est DE NOUVEAU à jour avec la modification du 7 Novembre.


try:
  from the_snake import *

except:
  print("je necessice un module nomme The_snake.py disponible a:\n https://my.numworks.com/python/antarctus/the_snake \n\n")
  raise

pommes_bouffe=0
niv=0
coefficient=2
b_score=0
score=0
mode_selectionne=0
marge_erreur=0
produit=0
s=None
KEY_QUIT=KEY_BACKSPACE
KEY_SHOP=KEY_SHIFT


mode_possible=(
((1,(255,0,0),1,1),), #best 125
((1,(170,0,0),-1,1),(2,(170,0,0),3,1)),
((1,(255,0,255),7,1,[(1,(50,50,50),-1000,1),]),),
((1,(255,0,0),1,2),(1,(255,200,0),5,1)),
((2,(0,255,255),8,1,[],3),),#best 192
((1,(255,0,0),1,1),(1,(170,0,0),-1,1),(2,(170,0,0),3,1),(1,(255,0,255),7,1,[(1,(0,0,0),-1000,1),]),(1,(255,0,0),1,2),(1,(255,200,0),5,1),(2,(0,255,255),8,1,[],3))
)

produits=[
[(0,255,0),0,True],
[(0,255,255),10,False],
[(0,0,255),20,False],
[(255,0,255),30,False],
[(255,0,0),40,False],
[(255,255,0),50,False],
[(0,0,0),80,False],
[[(0,250,0),(0,200,0),(0,150,0),(0,100,0),(0,150,0),(0,200,0),],160,False],
[[(0,250,250),(0,200,200),(0,150,150),(0,100,100),(0,150,150),(0,200,200),],180,False],
[[(0,0,250),(0,0,200),(0,0,150),(0,0,100),(0,0,150),(0,0,200),],200,False],
[[(250,0,250),(200,0,200),(150,0,150),(100,0,100),(150,0,150),(200,0,200),],220,False],
[[(255,0,0),(200,0,0),(150,0,0),(100,0,0),(150,0,0),(200,0,0)],240,False],
[[(250,250,0),(200,200,0),(150,150,0),(100,100,0),(150,150,0),(200,200,0),],260,False],
[[(0,0,0),(50,50,50),(100,100,100),(150,150,150),(100,100,100),(50,50,50),],280,False],
[[(0,255,0),(0,255,255),(0,0,255),(255,0,255),(255,0,0),(255,255,0)],500,False]
]


def cadenas(x,y,text,couleur=(50,50,50),condition=False):

  fill_rect(x+15,y+5,20,10,couleur)

  fill_rect(x+30,y+10,10,15,couleur)
  fill_rect(x+10,y+10,10,8,couleur)
  
  if not condition:
    fill_rect(x+10,y+18,10,7,couleur)

  fill_rect(x+5,y+25,40,25,couleur)

  draw_string(text,x+25-(5*len(text)),y+30,(255,255,255),couleur)


def man():
  global niv
  niv=int(pommes_bouffe**(1/coefficient))


def draw(arg=""):
  fill_rect(0,0,320,222,(255,255,255))

  draw_string("Niveau "+str(niv),100,10)

  fill_rect(68,28,154,14,(200,200,200))
  fill_rect(70,30,int(150*((pommes_bouffe-niv**coefficient)/((niv+1)**coefficient-niv**coefficient))),10,(240,0,0))

  fill_rect(265,15,40,30,(255,0,0))
  draw_string(str(pommes_bouffe),285-(5*len(str(pommes_bouffe))),20,(0,0,0),(255,0,0))

  if arg=="only_score":
    return

  draw_string("Score: "+str(score),80,60)
  draw_string("Meilleur score: "+str(b_score),80,80,(255*(b_score==score),0,0))

  draw_string("Shop: Shift",80,110)
  draw_string("Jouer: Ok",80,130)
  draw_string("Quitter: <X",80,150)

  fill_rect(10+mode_selectionne*50,172,50,50,(200,200,200))
  for i in range(6):
    cadenas(10+i*50,172,str(i*5),condition=niv>=i*5)

man()


while True:
  try:
    draw()
    sleep(0.5)

    while not(keydown(KEY_OK) or keydown(KEY_QUIT) or keydown(KEY_SHOP)):
      if keydown(KEY_PI):
        pommes_bouffe+=10
        man()
        draw()
      for i in range(12,18):
        if keydown(i) and niv>=(i-12)*5:
          mode_selectionne=i-12
          draw()
      if keydown(0) or keydown(3):
        mode_selectionne+=keydown(3)-keydown(0)
        mode_selectionne%=int(niv/5)+1
        if mode_selectionne>5:
          mode_selectionne=5
        draw()
      sleep(0.05)

    if keydown(KEY_QUIT):
      print("Total des pommes mangee: "+str(pommes_bouffe))
      break

    if keydown(KEY_SHOP):
      while keydown(KEY_SHOP):
        pass

      while not keydown(KEY_SHOP):

        draw("only_score")
        fill_rect(15+60*(produit%5),47+60*(produit//5),56,56,(200,200,200))

        for i in range(len(produits)):

          fill_rect(18+60*(i%5),50+60*(i//5),50,50,(220,220,100+120*(not produits[i][2])))

          draw_string(str(produits[i][1]),35+60*(i%5),80+60*(i//5))

          if type(produits[i][0])==type([2,3]):
            for j in range(6):
              fill_rect(20+[0,0,0,10,20,20][j]+(i%5)*60,50+60*(i//5)+[20,10,0,0,0,10][j],10,10,produits[i][0][j%len(produits[i][0])])

          if type(produits[i][0])==type((255,0,4)):
            for j in range(6):
              fill_rect(20+[0,0,0,10,20,20][j]+(i%5)*60,50+60*(i//5)+[20,10,0,0,0,10][j],10,10,produits[i][0])

        while not (keydown(0) or keydown(1) or keydown(2) or keydown(3) or keydown(KEY_OK)):
          pass

        if keydown(0) or keydown(3):
          produit+=keydown(3)-keydown(0)

        elif keydown(1) or keydown(2):
          produit+=5*(keydown(2)-keydown(1))

        produit%=len(produits)

        if keydown(KEY_OK):
          if pommes_bouffe>=produits[produit][1] and produits[produit][2]!=True:
            pommes_bouffe-=produits[produit][1]
            produits[produit][2]=True
            man()
            mode_selectionne=0
        sleep(0.1)
      sleep(0.2)
      continue

    commencer(m=mode_possible[mode_selectionne],c=produits[produit*(produits[produit][2])][0])
    draw_all()
    score=boucler(0.1)

    while not(keydown(KEY_OK) or keydown(KEY_QUIT)):
      sleep(0.05)
    pommes_bouffe+=score
    if score>b_score:
      b_score=score
    man()

  except KeyboardInterrupt:
    if marge_erreur>100:
      break
    else:
      marge_erreur+=1

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.