geometry_dash_wave.py

Created by diage-77

Created on March 27, 2025

5.22 KB

Renaissance du Wave de Geometry Dash mais sur calculette !

Appuyez sur « OK » ou « EXE » pour monter et relâchez pour descendre. La “taille” de votre wave peut changer l’angle de descente ou de montée.

Il n’y a que 3 niveaux et 2 cartes. J’ai réussi à terminer tous les niveaux moi-mêmes (vidéo bientôt disponible dans mon youtube ‘Diage GD’).

Je n’ai conçu que les Hitboxes du premier niveau, si vous voulez jouer au deuxième et au troisième, essayez de ne pas toucher les pointes. Votre piste est la représentation de vos hitboxes. Je travaille sur la version complète de hitboxes ET 2 autres cartes/niveaux qui pourraient être incroyable ! 🔥 (Le codage des hitboxes posent quand même problème).

J’espère que vous allez vous amuser !

Niveaux et système :

Sur le menu : appuyez sur ‘1’, ‘2’ ou ‘3’ pour accéder à l’un des niveaux.

À un niveau : appuyez sur « EXE » ou « OK » pour interagir avec le wave.

  • Niveau 1 et Carte 1 : (Difficulté facile)
  • Niveau 2 et Carte 2 : (Difficulté Normale)
  • Niveau 3 et Carte 2 : (Difficulté plus difficile)
Le jeu va à quelque chose comme ~60FPS~ Je ne peux pas concevoir de CBF pour NumWorks, ça serait non seulement une perte de temps et ridicule, et en plus je ne suis pas sûr que le processeur de la calculette (je ne sais même pas si on peut appeler ça un processeur…) arriverait à le soutenir.

Si vous ignorez ce que sont les CBF, je vous invite à chercher « Clicks Between Frame » sur internet, il y a des tas de vidéos qui expliquent bien le fonctionnement de ces choses là. Je ne perdrai pas mon temps à l’expliquer ici car je n’aurais pas assez de caractères (limite à 2048 caractères), et je ne suis moi-même pas sûr de leur fonctionnement.

Je travaille sur un Geometry Dash SHIP en parallèle.

Pour toutes suggestions ou questions, n’hésitez pas à me contacter à mon adresse mail pro : dasilvatiago77310@gmail.com


from math import *
from turtle import *
from random import *
from kandinsky import *
from ion import *
from time import *
def menu():
  hideturtle()
  fill_rect(0,0,330,230,(0,0,0))
  draw_string("Easy 1* - Press '1'",25,50,(255,255,255),(0,0,0))
  draw_string("Hard 5* - Press '2'",25,75,(255,255,255),(0,0,0))
  draw_string("Demon 10* - Press '3'",25,100,(255,255,255),(0,0,0))
  while keydown(KEY_ONE)==False or keydown(KEY_TWO)==False or keydown(KEY_THREE)==False or keydown(KEY_FOUR)==False:
    if keydown(KEY_ONE)==True:
      map1()
      gameplay1()
    if keydown(KEY_TWO)==True:
      map2()
      gameplay2(1,1)
    if keydown(KEY_THREE)==True:
      map2()
      gameplay2(2,1)

def up(size, gravity, speedy):
  if size==1:
    if gravity==1:
      setheading(45)
      forward(1*speedy)
    elif gravity==2:
      setheading(-45)
      forward(1*speedy)
  elif size==2:
    if gravity==1:
      setheading(70)
      forward(5*speedy)
    elif gravity==2:
      setheading(-70)
      forward(5*speedy)

def down(size, gravity, speedy):
  if size==1:
    if gravity==1:
      setheading(-45)
      forward(1*speedy)
    elif gravity==2:
      setheading(45)
      forward(1*speedy)
  elif size==2:
    if gravity==1:
      setheading(-70)
      forward(5*speedy)
    elif gravity==2:
      setheading(70)
      forward(5*speedy)

def gameplay1():
  pensize(2)
  penup()
  showturtle()
  goto(-160,0)
  x,y=position()
  pendown()
  cl=0
  click=0
  fill_rect(140,100,40,20,(255,230,230))
  while x<-20:
    if keydown(KEY_OK)==True or keydown(KEY_EXE)==True:
      up(2,1,1)
      cl=1
    elif keydown(KEY_OK)==False and keydown(KEY_EXE)==False:
      down(2,1,1)
      if cl==1:
        cl=0
        click=click+1
    x,y=position()
    hitbox(1,x,y)
  while x>=-20 and x<160:  
    if keydown(KEY_OK)==True or keydown(KEY_EXE)==True:
      up(1,1,1)
      cl=1
    elif keydown(KEY_OK)==False and keydown(KEY_EXE)==False:
      down(1,1,1)
      if cl==1:
        cl=0
        click=click+1
    x,y=position()
    hitbox(1,x,y)
  if cl==1:
    cl=0
    click=click+1
  penup()
  score(click)
  menu()

def gameplay2(difficulty,sp2):
  pensize(2)
  penup()
  showturtle()
  goto(-160,0)
  x,y=position()
  pendown()
  cl=0
  click=0
  fill_rect(150,100,30,30,(255,230,230))
  spiked(140,95)
  spiked(170,95)
  spikeu(155,130)
  while x<160:
    if keydown(KEY_OK)==True or keydown(KEY_EXE)==True:
      up(difficulty,1,sp2)
      cl=1
    elif keydown(KEY_OK)==False and keydown(KEY_EXE)==False:
      down(difficulty,1,sp2)
      if cl==1:
        cl=0
        click=click+1
    x,y=position()
  if cl==1:
    cl=0
    click=click+1
  penup()
  score(click)
  menu()

def score(click):
  fill_rect(0,0,330,230,(0,0,0))
  draw_string("Clicks: {}".format(click),50,100,(255,255,255),(0,0,0))
  sleep(3)
  
def spikeu(x,y):
  fill_rect(x+8,y-15,1,2,(255,0,0))
  fill_rect(x+7,y-13,3,2,(225,0,0))
  fill_rect(x+6,y-11,5,2,(200,0,0))
  fill_rect(x+5,y-9,7,2,(175,0,0))
  fill_rect(x+4,y-7,9,2,(150,0,0))
  fill_rect(x+3,y-5,11,2,(125,0,0))
  fill_rect(x+2,y-3,13,2,(100,0,0))
  fill_rect(x+1,y-1,15,2,(75,0,0))
  fill_rect(x,y,17,1,(50,0,0))
  
def spiked(x,y):
  fill_rect(x,y,17,1,(50,0,0))
  fill_rect(x+1,y+1,15,2,(75,0,0))
  fill_rect(x+2,y+3,13,2,(100,0,0))
  fill_rect(x+3,y+5,11,2,(125,0,0))
  fill_rect(x+4,y+7,9,2,(150,0,0))
  fill_rect(x+5,y+9,7,2,(175,0,0))
  fill_rect(x+6,y+11,5,2,(200,0,0))
  fill_rect(x+7,y+13,3,2,(225,0,0))
  fill_rect(x+8,y+15,1,2,(255,0,0))
  
def map1():
  fill_rect(0,0,330,230,(255,230,230))
  fill_rect(0,0,330,50,(0,0,0))
  fill_rect(0,172,330,50,(0,0,0))
  fill_rect(130,142,200,30,(0,0,0))
  fill_rect(130,50,200,30,(0,0,0))
  fill_rect(135,85,5,52,(0,255,100))
  fill_rect(230,80,100,15,(0,0,0))
  fill_rect(230,127,100,15,(0,0,0))
  
def map2():
  fill_rect(0,0,330,230,(255,230,230))
  fill_rect(0,0,330,95,(0,0,0))
  fill_rect(0,130,330,100,(0,0,0))
  #Spikes du haut
  spiked(20,95)
  spiked(50,95)
  spiked(80,95)
  spiked(110,95)
  spiked(140,95)
  spiked(170,95)
  spiked(200,95)
  spiked(230,95)
  spiked(260,95)
  spiked(290,95)
  spiked(320,95)
  #Spikes du bas
  spikeu(35,130)
  spikeu(65,130)
  spikeu(95,130)
  spikeu(125,130)
  spikeu(155,130)
  spikeu(185,130)
  spikeu(215,130)
  spikeu(245,130)
  spikeu(275,130)
  spikeu(305,130)
  #Deco
  #BAS
  spiked(35,130)
  spiked(65,130)
  spiked(95,130)
  spiked(125,130)
  spiked(155,130)
  spiked(185,130)
  spiked(215,130)
  spiked(245,130)
  spiked(275,130)
  spiked(305,130)
  #HAUT
  spikeu(20,95)
  spikeu(50,95)
  spikeu(80,95)
  spikeu(110,95)
  spikeu(140,95)
  spikeu(170,95)
  spikeu(200,95)
  spikeu(230,95)
  spikeu(260,95)
  spikeu(290,95)
  spikeu(320,95)

def map3():
  fill_rect(0,0,330,230,(255,230,230))
  fill_rect(0,0,330,95,(0,0,0))
  fill_rect(0,130,330,100,(0,0,0))  


def dead(numap):
  penup()
  reset()
  if numap==1:
    map1()
    gameplay1()
  elif numap==2:
    map2()
    gameplay2(1,1)
  elif numap==3:
    map2()
    gameplay2(2,1)

def hitbox(numap,x,y):
  if numap==1:
    if x<=-30 and y>=60:
      dead(numap)
    elif x<=-30 and y<=-60:
      dead(numap)
    elif x>=-30 and x<=70 and y>=30:
      dead(numap)
    elif x>=-30 and x<=70 and y<=-30:
      dead(numap)
    elif x>=70 and y>=15:
      dead(numap)
    elif x>=70 and y<=-15:
      dead(numap)

menu()

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.