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)