interface_calcul.py

Created by leno-m

Created on May 01, 2023

3.81 KB

un script qui reproduit presque parfaitement l’interface de calcul avec quelques petits ajout en entrant simplement ?2 par exemple (le nombre dernière étant l’élément de la liste demandé. L’élément de la liste sera alors affiché à la place du résultat.


from math import *

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

colorex=["0","1","1"]
colorn=-1
touches="^^^^^^^^^^^^^^^^^[]{}_→ghi=<>789()^456*/^123+-^0.^^^^^^^^^^^^^^^^^^^^abcdefghijklmnopq^rstuv^wxyz ^?!^^^^^^^^^^^^^^^^^^^^ABCDEFGHIJKLMNOPQ^RSTUV^WXYZ ^?!^^^"
index=0
clavier=0
print("Vous pouvez entrer ?2 par exemple ou ?3 ... pour obtenir les éléments de la liste data")
print("Modifiez la liste data avec vos réponses (ligne 15 dans le script)")
data=["exemple","exemple","exemple","exemple","exemple","DINDE RUNNER","https://www.dinde runner.ml","exemple","exemple","exemple","42"]
requet="077+48"
T_interface=["0","800*1.661328","3,5+72643,2","-3,5-2-5,5","6449-4"]
F_interface=["0","0","1","0","1"]
reponses=["0","1834","72665","7","6445"]
x_clavier=5
y_tout=202

def draw():
  global requet
  global colorn
  global x_clavier
  global clavier
  global y_tout
  global T_interface
  
  fill_rect(0,0,320,222,"white")
  print(requet)
  if requet[0]=="0" and requet[1]=="?":
    try:
      if int(requet[2:])<len(data):
          reponses.append(data[int(requet[2:])])
      else:
        reponses.append("Index error: max " + str(len(data)-1))
    except ValueError:
      reponses.append("ValueError")
  else:
    try:
      reponses.append(str(eval(requet)))
    except SyntaxError:
      reponses.append("undef")
  reponses.remove(reponses[0])
  if len(requet)>1:  
    requet=requet[1:len(requet)]      
  T_interface.append(requet)
  T_interface.remove(T_interface[0])
  F_interface.append(colorex[colorn+1])
  F_interface.remove(F_interface[0])
  colorn*=-1
  requet=""
  x_clavier=5
  clavier=0
  fill_rect(0,191,320,1,"gray")
  if index==51:
    fill_rect(312,210,3,3,"green")
  y_tout=0
  for i in range(len(F_interface)):
    if F_interface[i]=="1":
      fill_rect(0,y_tout,320,y_tout+38,"white")
      draw_string(T_interface[i],5,y_tout+10,"black","white")
      draw_string(reponses[i],315-len(reponses[i])*11,y_tout+10,"black","white")
    else:
      fill_rect(0,y_tout,320,y_tout+38,color(240,250,248))
      draw_string(T_interface[i],5,y_tout+10,"black",color(240,250,248))
      draw_string(reponses[i],315-len(reponses[i])*11,y_tout+10,"black",color(240,250,248))
    y_tout+=38
    
  fill_rect(0,190,320,50,"white")  
  fill_rect(0,190,320,1,"gray")
  
def Touche_boucle():
  global requet
  global index
  global x_clavier
  global clavier
  
  if keydown(KEY_ALPHA):  
    if index==104:
      index=0  
      fill_rect(310,200,5,15,"white")
    
    elif index==52:
      index=0  
      fill_rect(310,200,5,5,"white")
      
    elif index==0:
      index=52
      fill_rect(310,200,5,5,"green")
            
  if keydown(KEY_SHIFT):
    if index==52:
      index+=52
      fill_rect(310,210,5,5,"orange")
      
    elif index==104:
      index-=52  
      fill_rect(310,210,5,5,"white")
  
  if keydown(KEY_BACKSPACE) and x_clavier>5:
    if clavier>0:
      clavier-=1
      fill_rect(0,198,320,222,"white")
      x_clavier=5-11*clavier
      for i in range(len(requet)):
        draw_string(requet[i],x_clavier,197)
        x_clavier+=11
    
    x_clavier-=11
    draw_string("  ",x_clavier,197)
    requet=requet[0:len(requet)-1]
          
  for key in range(KEY_LEFT,KEY_EXE+1):
    if keydown(key) and not keydown(KEY_ALPHA) and not touches[key-1]=="^":
      requet+=touches[key+index-1]
      if x_clavier>297:
        fill_rect(0,198,320,222,"white")
        clavier+=1
        x_clavier=5-11*clavier
        for i in range(len(requet)-1):
          draw_string(requet[i],x_clavier,197)
          x_clavier+=11
                
      draw_string(touches[key+index-1],x_clavier,197)
      x_clavier+=11


while True:
  draw()
  time.sleep(0.5)
  while not keydown(KEY_EXE):
    if requet=="":
      requet="0"
    Touche_boucle()
    fill_rect(x_clavier,197,1,18,"black")
    time.sleep(0.07)
    

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.