couleur_rgb_devinette.py

Created by florian-allard

Created on April 18, 2021

3.47 KB

Petit jeu dont le but est de retrouver une couleur donnée en déplaçant 3 curseurs qui règlent les composantes Rouge, Verte et Bleue.
Une version simple (sans la partie jouable) est disponible ici.


from kandinsky import *
from ion import *
from time import sleep,monotonic
from random import randint

diff = 2
draw_string("Choix de la difficulté :",40,30,'orange')
draw_string("Elevée",130,60,'blue')
draw_string("Moyenne",125,85,'blue')
draw_string("Faible",130,110,'blue')
while keydown(KEY_EXE) or keydown(KEY_OK):True
while not (keydown(KEY_EXE) or keydown(KEY_OK)):
  draw_string("[",100+5*(diff%2),35+25*diff,'blue')
  draw_string("]",110+10*10-5*(diff%2),35+25*diff,'blue')
  if keydown(KEY_DOWN) or keydown(KEY_UP):
    draw_string(" ",100+5*(diff%2),35+25*diff)
    draw_string(" ",110+10*10-5*(diff%2),35+25*diff)
    diff = (diff+keydown(KEY_DOWN)-keydown(KEY_UP)-1)%3+1
    while keydown(KEY_DOWN) or keydown(KEY_UP):True

x = 50
y = 50
r0 = g0 = b0 = 255
while 1:
  draw_string("Nouvelle partie",320//2+5,140,["white","black"][r0+g0+b0>384],(r0,g0,b0))
  draw_string("appuyer sur EXE",320//2+5,160,["white","black"][r0+g0+b0>384],(r0,g0,b0))
  while not (keydown(KEY_EXE) or keydown(KEY_OK)):True
  r = g = b = 145
  r0=8*diff*randint(0,255//(8*diff))
  g0=4*diff*randint(0,255//(4*diff))
  b0=8*diff*randint(0,255//(8*diff))
  fill_rect(320//2,0,320//2,222,(r0,g0,b0))
  draw_string("Retrouve la",320//2+25,30,["white","black"][r0+g0+b0>384],(r0,g0,b0))
  draw_string("couleur ! ",320//2+35,50,["white","black"][r0+g0+b0>384],(r0,g0,b0))

  fini = False
  t = monotonic()
  r1 = g1 = b1 = 144
  pos = 0
  chgt = True
  for i in range(3):
    draw_string(str([r1,g1,b1][i]),x+15,y+18*i,"white",["red","green","blue"][i])

  while not fini:
    if chgt or (r1,g1,b1) != (r,g,b):
      chgt = False
      for i in range(3):
        draw_string("< ",x-5,y+18*i,[(r1,g1,b1),["white","black"][r1+g1+b1>384]][pos == i],(r1,g1,b1))
        draw_string(" >",x+45,y+18*i,[(r1,g1,b1),["white","black"][r1+g1+b1>384]][pos == i],(r1,g1,b1))

    if (r1,g1,b1) != (r,g,b):
      r,g,b=r1,g1,b1
      draw_string("   ",x+15,y+18*pos,"white",["red","green","blue"][pos])
      draw_string(str([r,g,b][pos]),x+15+5*(3-len(str([r,g,b][pos]))),y+18*pos,"white",["red","green","blue"][pos])
      fill_rect(0,0,320//2,50,(r,g,b))
      fill_rect(0,50,x-5,110,(r,g,b))
      fill_rect(x+65,50,320//2-(x+65),110,(r,g,b))
      fill_rect(x-5,y+54,70,y+85-104,(r,g,b))
      fill_rect(x-5,y+103,70,7,(r,g,b))
      fill_rect(0,y+110,x-5-5*len(str(r)+str(g)+str(b)),222-(y+110),(r,g,b))
      fill_rect(x+65+5*len(str(r)+str(g)+str(b)),y+110,320//2-(x+65)-5*len(str(r)+str(g)+str(b)),222-(y+110),(r,g,b))
      fill_rect(x-5-5*len(str(r)+str(g)+str(b)),y+128,70+10*len(str(r)+str(g)+str(b)),222-(y+128),(r,g,b))
      draw_string("#"+"0"*(2-len(hex(r)[2:]))+hex(r)[2:]+"0"*(2-len(hex(g)[2:]))+hex(g)[2:]+"0"*(2-len(hex(b)[2:]))+hex(b)[2:],x-5,y+85)
      draw_string("rgb("+str(r)+","+str(g)+","+str(b)+")",x-5-5*len(str(r)+str(g)+str(b)),y+110)
    
    if pos==0:
      r1 = (r+8*diff*(keydown(KEY_RIGHT)-keydown(KEY_LEFT)))%(256+8*(diff==3))
    elif pos==1:
      g1 = (g+4*diff*(keydown(KEY_RIGHT)-keydown(KEY_LEFT)))%(256+8*(diff==3))
    else:
      b1 = (b+8*diff*(keydown(KEY_RIGHT)-keydown(KEY_LEFT)))%(256+8*(diff==3))
    
    if keydown(KEY_UP) or keydown(KEY_DOWN):
      pos = (pos-keydown(KEY_UP)+keydown(KEY_DOWN))%3
      chgt = True
      sleep(0.05)
    sleep(0.1)
    if (r,g,b) == (r0,g0,b0):
      draw_string("Gagné en",320//2+40,80,["white","black"][r0+g0+b0>384],(r0,g0,b0))
      draw_string(str(int(monotonic()-t))+" sec ! ",320//2+40,100,["white","black"][r0+g0+b0>384],(r0,g0,b0))
      fini = True

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.