space_game.py

Created by chambounaudaubin

Created on December 22, 2025

6.77 KB


from math import *
from random import randint as rd
from kandinsky import fill_rect as fr, draw_string as dt, color as c
from ion import keydown as kd, KEY_OK as ko, KEY_UP as ku, KEY_DOWN as kdn,KEY_SHIFT,KEY_SIX,KEY_SEVEN
from time import *

level=1
x_e=[]
y_e=[]
color=["red",c(0,0,0),c(0,255,50),"orange","grey","brown"]
nb_e=[0,10,15,20,20,22,24,26,28,30,32,1]
delay=320/nb_e[level]
score=0
step_e=[3,4,5,6,6,7,7,8,8,9,9,9]
step=step_e[level]
color_lvl=[0,"red","blue","orange","green",c(173,216,230),"yellow","grey","pink","brown",c(25,25,25),c(25,25,25)]
color_e=color_lvl[level]
x=50
y=120
death=0
life=4
heart=[150,165,180,195,210,225,240,255,270]
deathl=[0,40,20,15,10,8.5,7,6.5,5,4.5,4,3.75,3.5,3.25,3.1,3]
time_p=[0,0.02,0.02,0.03,0.03,0.04,0.04,0.05,0.05,0.06,0.06,0.07,0.07,0.08,0.08]
starsx=[i for i in range(0,320,10)]
starsy=[rd(30,222) for i in range(0,320,10)]
xg=320
yg=120
time=0
gift_p=0
xb=x+23
yb=y+2
stop=0
time_s=190
xr=x+30
yr=y-5
movement=0
e=0
xf=320
endp=0

def e(xe,ye):
  fr(xe+4,ye,3,1,color_e)
  fr(xe+3,ye+1,1,1,color_e)
  fr(xe+2,ye+2,1,2,color_e)
  fr(xe+1,ye+4,8,3,color_e)
  fr(xe,ye+5,1,1,color_e)
  fr(xe+6,ye+1,5,1,color_e)
  fr(xe+6,ye+2,7,2,color_e)
  fr(xe+9,ye+4,2,2,color_e)
  fr(xe+11,ye+4,2,1,color_e)
  fr(xe+4,ye+1,2,3,color[1])
  fr(xe+3,ye+2,1,2,color[1])
  fr(xe+13,ye+3,step,2,color[1])
  fr(xe+14,ye+4,1,1,color[1])
  fr(xe+15,ye+4,2,1,color[3])
  fr(xe+17,ye+4,3,1,color[0])
  fr(xe+7,ye,step,1,color[1])
  fr(xe+11,ye+1,step,1,color[1])
  fr(xe+13,ye+2,step,1,color[1])
  fr(xe+19,ye+4,step,1,color[1])
  fr(xe+11,ye+5,step,1,color[1])
  fr(xe+9,ye+6,step,1,color[1])  

def player(xp,yp):
  fr(xp+4,yp,13,2,color[4])    
  fr(xp+6,yp+2,13,3,c(100,100,100))
  fr(xp+4,yp+5,13,2,color[4])
  fr(xp+5,yp+2,1,3,color[1])
  fr(xp+3,yp,1,2,color[1])
  fr(xp+3,yp+5,1,2,color[1])
  fr(xp+10,yp+3,2,2,color[1])
  fr(xp+16,yp+3,2,2,color[1])
  fr(xp+18,yp-step+2,4,step,color[1])
  fr(xp+18,yp+5,3,step,color[1])
  fr(xp+17,yp,1,2,color[5])
  fr(xp+19,yp+2,2,3,color[5])
  fr(xp+17,yp+5,1,2,color[5])
  fr(xp+2,yp,1,2,color[3])
  fr(xp+4,yp+2,1,2,color[3])
  fr(xp+2,yp+5,1,2,color[3])
  fr(xp+1,yp,1,2,color[0])
  fr(xp+3,yp+2,1,2,color[0])
  fr(xp+1,yp+5,1,2,color[0])
  fr(xp+1,yp+2,2,3,color[1])
  fr(xp+1,yp-step,18,step,color[1])
  fr(xp+1,yp+7,18,step,color[1])  

def coeur(xc,yc):
  fr(xc,yc+2,1,1,color[0])
  fr(xc+1,yc,3,2,color[0])
  fr(xc+1,yc+2,8,3,color[0])
  fr(xc+2,yc+5,6,1,color[0])
  fr(xc+3,yc+6,4,1,color[0])
  fr(xc+4,yc+7,2,1,color[0])
  fr(xc+5,yc+1,1,1,color[0])
  fr(xc+6,yc,2,2,color[0])
  fr(xc+8,yc+1,1,1,color[0])
def gift(xg,yg):
  fr(xg,yg+2,7,7,color[0])
  fr(xg+2,yg,3,2,color[2])
  fr(xg+3,yg+2,1,7,color[2])
  fr(xg,yg+5,7,1,color[2])
  fr(xg+5,yg,step,2,color[1])
  fr(xg+7,yg,step,9,color[1])

fr(0,0,320,240,color[1])
for i in range(0,life):
  coeur(heart[i],8)
xmes=200
while True:
  if xmes>-200:
    xmes-=2
    dt("Evite les vaisseaux ",xmes,100,"grey","black")
  fr(0,25,320,1,color_e)
  for i in range(0,len(starsx)):
    fr(starsx[i],starsy[i],1,1,c(255,255,255))
    fr(starsx[i]+1,starsy[i],1,1,"black")
    starsx[i]=starsx[i]-1
    if starsx[i]<-1:starsx[i]=320
      
  if not len(x_e)>nb_e[level] and delay<0:
    x_e.append(320)
    y_e.append(rd(30,210))
    delay=320/nb_e[level]
  delay=delay-1
  for i in range(0,len(x_e)):
    if x_e[i]<-19:
      x_e[i]=320
      y_e[i]=rd(30,210)
    else:
      x_e[i]=x_e[i]-step
  for i in range(0,len(x_e)):
    e(x_e[i],y_e[i])
  score=score+2*time_p[level]
  if score>50:
    level=level+1
    score=0
  dt("level:"+str(level)+" "+str(round(score*2)*1)+"%  ",5,5,color_e,color[1])
  dt("shift",268,5,color_e,color[1])
  step=step_e[level]
  color_e=color_lvl[level]
  if kd(ku) and y>35:
    y=y-step
    movement=1
  else:
    movement=0
  if kd(kdn) and y<210:
    y=y+step
    movement=1
  elif not kd(ku):
    movement=0
  player(x,y)
  for i in range(0,len(x_e)):
    if x>x_e[i]-20 and x<x_e[i]+13 and y>y_e[i]-7 and y<y_e[i]+7 and death<0:
      for i in range(0,3):
        sleep(0.1)
        fr(x,y,23,7,color[1])
        sleep(0.1)
        player(x,y)
      death=deathl[step]
      life=life-1
      fr(0,0,320,20,color[1])
      for i in range(0,life):
        coeur(heart[i],8)
  death=death-1
  time=time+0.01
  if round(time%20)==0:
    xg=330
    yg=rd(30,200)
  if xg<-10 and yg>=30:
    xg=330
    yg=-20
  else:
    xg=xg-int(step/2)
  gift(xg,yg)
  if x>xg-23 and x<xg+7 and y>yg-7 and y<yg+9:
    fr(xg,yg,7,9,color[1])
    fr(xb,yb,3,3,color[1])
    fr(xr,yr,4,13,color[1])
    xg=-10
    gift_p=rd(1,3)
    time_s=190
  if gift_p==1:
    if life<8:
      life=life+2
    fr(0,0,320,20,color[1])
    for i in range(0,life):
      coeur(heart[i],8)
  if gift_p==1:
    gift_p=0
  if gift_p!=2:
    xb=x+10
    yb=y
  if gift_p==2 and time_s>0:
    if xb>325:
      stop=1
    for i in range(0,len(x_e)):
      if xb>x_e[i]-5 and x<x_e[i]+15 and y>y_e[i]-5 and y<y_e[i]+9:
        stop=1
        fr(x_e[i],y_e[i],19,7,color[1])
        x_e[i]=320
        y_e[i]=rd(30,240)
    if stop==1:
      fr(xb,yb,3,3,color[1])
      xb=x+23
      yb=y+2
      stop=0
    else:
      xb=xb+10
      fr(xb,yb,3,3,color[0])
      fr(xb-10,yb,10,3,color[1])
    time_s=time_s-0.1
  if gift_p==3 and time_s>0 and movement==1:
    xr=x+30
    yr=y-3
    fr(xr,yr,4,13,"blue")
    fr(xr,yr,2,13,c(50,49,143))
    fr(xr,yr-step,4,step,"black")
    fr(xr,yr+13,4,step,"black")
    time_s=time_s-0.1
    for i in range(0,len(x_e)):
      if xr>x_e[i]-4 and xr<x_e[i]+15 and yr>y_e[i]-13 and yr<y_e[i]+7 and movement==1:
        stop=1
        fr(x_e[i],y_e[i],19,7,color[1])
        x_e[i]=320
        y_e[i]=rd(30,240)
  if gift_p==3 and time_s>0 and movement==0:
    fr(xr,yr,4,13,"black")
  if time_s<1 and time_s>-1:
    gift_p=0
    fr(xb,yb,3,3,color[1])
    fr(xr,yr,4,13,color[1])
    time_s=-1
  if level==10 and score*2>=90:
    endp=1
  if kd(KEY_SIX) and kd(KEY_SEVEN):
    level=level+1
    sleep(2)
  if level>=10 and endp==1:
    xf=xf-int(step/2)
    fr(xf,31,5,250,color_e)
    fr(xf+5,31,5,250,"black")
  if x+15>xf:
    end=1
    fr(xf,31,5,320,"black")
    break
  if life<=0:
    end=0
    break
  if kd(KEY_SHIFT):
    sleep(0.3)
    while not kd(KEY_SHIFT):
      pass
    sleep(0.3)
x,y,w,h=140,110,50,0
for i in range(35):
  x,y,w,h=x-2,y-2,w+4,h+4
  fr(int(x),int(y),int(w),int(h),color_e)
  fr(int(x+2),int(y+2),int(w-4),int(h-4),"black")
  sleep(0.02)
if end==0:
  dt("Game by Aubin",95,70,color_e,"black")
  dt("YOU LOST!",120,50,color_e,"black")
  dt("Level:"+str(level)+"/"+"10"+" - "+str(round(score*2))+"%",83,90,color_e,"black")
  dt("************",100,130,color_e,"black")
else:
  dt("Game by Aubin",95,70,"orange","black")
  dt("CONGRATULATION!",90,50,"orange","black")
  dt("Level:10/10",103,90,"orange","black")
  dt("Game finished!!",90,110,"orange","black")
  dt("************",100,145,"orange","black")
while True:pass

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.