# demineur.py

Created by schraf

Created on June 26, 2020

1.28 KB

Explications en vidéo

Ce jeu ne fonctionnera que sur votre calculatrice, pas sur l’émulateur.

Pour le lancer, tapez `>>go()` ou `>>go(30)` si vous voulez que la machine cache 30 mines au lieu de 20

```from kandinsky import *
from ion import keydown
from random import choice

fr = fill_rect
N,G,V = 3*(0,),3*(120,),(0,255,0)

def wait(b):
while True:
for i in b:
if keydown(i):
while keydown(i): True
return i

def cpte(x,y,b): return len([i for (i,j) in b if abs(i-x)<2 and abs(j-y)<2])

def place(d,b = []):
while len(b) < d:
x, y = choice(range(15)), choice(range(10))
if (x,y) not in b and x+y > 0 and x+y < 23 and \
cpte(14,9,b) < 2 and cpte(0,0,b) < 2:
b.append((x,y))
return b

def grille():
for i in range(16):
if i<11:fr(8,21+20*i,301,1,N)
fr(8+20*i,21,1,200,N)

def fin(b,t):
for (x,y) in b: draw_string('*',13+20*x,23+20*y,G)
sc = 0
for i in range(150):
if get_pixel(9+20*(i%15),22+20*(i//15))[0]==120: sc+=1
aff(t + ' Score=' + str(sc))

def aff(t): draw_string(t + (' '*40),8,2,N)

def ca(x,y,c=G): fr(9+20*x,22+20*y,19,19,c)

def dep(x,y,t):
ca(x,y,G)
return max(0,min(14,x-1+t%3)),max(0,min(9,y-6+t//6))

def go(d=20):
grille()
x,y,b = 0,0,place(d)
ca(14,9,V)
while True:
ca(x,y,N)
nb = cpte(x,y,b)
aff(str(nb)+' mine'+'s'*(nb>1))
t = wait([5,30,31,32,36,38,42,43,44])
if t==5: return
x,y = dep(x,y,t)
if (x,y) in b:
fin(b, 'PERDU')
return
else:
if (x,y) == (14,9):
fin(b,'BRAVO')
return```