Tuto détaillé sur la création de ce jeu (utile si vous suivez la filière NSI au lycée)
Obtenir le plus grand territoire possible en lançant de la peinture.
Donc mettez des 0 ou des 1 pour avoir 2 joueurs humains ou pour que la calculatrice joue toute seule.
Les touches sont les flèches gauche et droite et pour lancer la peinture, restez appuyé plus ou moins longtemps sur la flèche vers le bas (Flèche vers le haut pour le 2e joueur humain) pour définir la distance du jet.
from turtle import * from time import * from ion import * from random import randint from kandinsky import fill_rect, get_pixel, draw_string from math import sqrt def pause(a): setheading(a) sleep(0.02) def dist(rvb1, rvb2): (r1, v1, b1), (r2, v2, b2) = rvb1, rvb2 return sqrt((r1 - r2) ** 2 + (v1 - v2) ** 2 + (b1 - b2) ** 2) def score(*joueurs): hideturtle() for c in range(320): for l in range(222): v = get_pixel(c, l) if v != BL: for j in joueurs: d = dist(v, j.rvb) if d < 100: j.score += 1 / (1 + d) total = sum(j.score for j in joueurs) for j in joueurs: draw_string("{0:.2f}".format(100 * j.score / total), 140, 100 - j.pos, BL, j.coul) class joueur: def __init__(self, coul, pos, ia, mi, ma, jet, gau, drte): self.coul = coul self.pos = pos self.ia = ia self.dep = (mi + ma) / 2 self.mi = mi self.ma = ma self.jet = jet self.gau = gau self.drte = drte self.score = 0 if pos > 0: fill_rect(0, 0, 320, 5, coul) self.rvb = get_pixel(0, 0) else: fill_rect(0, 217, 320, 5, coul) self.rvb = get_pixel(0, 217) def tour(self): hideturtle() color("black") penup() goto(0, self.pos) setheading(self.dep) showturtle() if self.ia: t = monotonic() a = self.dep while monotonic() - t < 0.4: a = max(self.mi, min(self.ma, a + randint(-10, 10))) pause(a) d = randint(1, 200) else: a = self.dep while not keydown(self.jet): if keydown(self.gau): a = min(self.ma, a + 5) pause(a) elif keydown(self.drte): a = max(self.mi, a - 5) pause(a) d = 0 while keydown(self.jet): d += 0.2 fd(d) color(self.coul) pendown() pensize(randint(20, 80)) for _ in range(6): goto(position()) j1 = joueur("purple", -100, 0, 0, 180, KEY_DOWN, KEY_LEFT, KEY_RIGHT) j2 = joueur("orange", 100, 1, -180, 0, KEY_UP, KEY_RIGHT, KEY_LEFT) BL = get_pixel(10, 10) turn = 0 while turn < 10: j1.tour() j2.tour() turn += 1 score(j1, j2)