・ Jeu de football PK ・ Amidakuji etc ... Cependant, ...
J'ai abandonné parce que je ne pouvais pas y arriver avec mes propres capacités. J'ai reconsidéré et est venu avec
#coding:utf-8
import tkinter as tk
class Ball:
def __init__(self, x, y, dx, dy, color):
self.x = x
self.y = y
self.dx = dx
self.dy = dy
self.color = color
def move(self, canvas):
#Effacer le cercle actuel
self.erase(canvas)
#Déplacer les coordonnées X et y
self.x = self.x + self.dx
self.y = self.y + self.dy
#Tracez un cercle à la position suivante
self.draw(canvas)
#S'il est au-dessus du bord, tournez-le dans le sens opposé
if (self.x >= canvas.winfo_width()):
self.dx = -1
if (self.x <= 0):
self.dx = 1
if (self.y >= canvas.winfo_height()):
self.dy = -1
if (self.y <= 0):
self.dy = 1
def erase(self, canvas):
canvas.create_oval(self.x - 20, self.y - 20, self.x + 20,self.y + 20, fill="white", width=0)
def draw(self, canvas):
canvas.create_oval(self.x - 20, self.y - 20, self.x + 20,self.y + 20, fill=self.color, width=0)
class Rectangle(Ball):
def erase(self, canvas):
canvas.create_rectangle(self.x - 20, self.y - 20, self.x + 20,self.y + 20, fill="white", width=0)
def draw(self, canvas):
canvas.create_rectangle(self.x - 20, self.y - 20, self.x + 20,self.y + 20, fill=self.color, width=0)
class Triangle(Ball):
def erase(self, canvas):
canvas.create_rectangle(self.x - 20, self.y - 20, self.x + 20,self.y + 20, fill="white", width=0)
def draw(self, canvas):
canvas.create_polygon (self.x, self.y - 20, self.x + 20,self.y + 20, self.x -20, self.y + 20, fill=self.color, width=0)
#Préparez trois cercles ensemble
balls = [
Ball(400, 300, 1, 1, "green"),
Ball(200, 100, -1, 1, "green"),
Ball(100, 200, 1, -1, "green")
]
def loop():
#bouge toi
for b in balls:
b.move(canvas)
#Bloquer pour casser
class Block:
w_x = 100 #Largeur de bloc(coordonnée x)
w_y = 30 #Largeur de bloc(coordonnée y)
global dy, score #Je veux changer la quantité de mouvement et le score de la classe de balle en cas de collision, donc je fais une déclaration globale.
#Interrupteur de blocage. 1 est ON,0 est OFF
block_list =[[1,1,1,1,1,1,1,1,1,1,1,1], # j = 0 , i = 0 ~ 11
[1,1,1,1,1,1,1,1,1,1,1,1], # j = 1 , i = 0 ~ 11
[1,1,1,1,1,1,1,1,1,1,1,1]] # j = 2 , i = 0 ~11 Ordre des lignes / colonnes
def draw(self):
for i in range(6):
for j in range(3):
cv.create_rectangle(i*self.w_x, j*self.w_y, (i+1)*self.w_x, (j+1)*self.w_y, fill = "orange", tag = "block"+str(j)+str(i))
def reflect(self):
for i in range(12):
for j in range(3):
#Balle réfléchie d'en haut
if (ball.y-ball.w < (j+1)*self.w_y #La balle est sous le bloc
and i*self.w_x < ball.x < (i+1)*self.w_x #La balle est prise en sandwich entre les côtés gauche et droit du bloc
and self.block_list[j][i] == 1): #Le commutateur est 1
ball.dy *= -1 #Réfléchir
cv.delete("block"+str(j)+str(i)) #Effacer le dessin du bloc
self.block_list[j][i] = 0 #éteignez l'interrupteur
score.score += 1 #Ajouter des points au score
score.delete() #Mettre à jour (supprimer) le score-produire)
score.draw()
#encore
root.after(10,loop)
#Dessinez une fenêtre
root = tk.Tk()
root.geometry("800x600")
```pyhon
# Jeu terminé
def gameover():
global w, dx, dy
if ball.y + ball.w > win_height :
cv.delete("paddle")
cv.delete("ball")
cv.create_text(win_center_x, win_center_y, text = "GAME OVER(T_T)", font = ('FixedSys', 40))
ball.w = 0
ball.dx = 0
ball.dy = 0
# Jeu clair
def gameclear():
global w, dx, dy
if score.score == 18 :
cv.delete("paddle")
cv.delete("ball")
cv.create_text(win_center_x, win_center_y, text = "GAME CLEAR(^0^)", font = ('FixedSys', 40))
ball.w = 0
ball.dx = 0
ball.dy = 0
# Mettre la toile
canvas =tk.Canvas(root, width =800, height =600, bg="#fff")
canvas.place(x = 0, y = 0)
# Réglez la minuterie
root.after(10, loop)
root.mainloop()
#Résumé En faisant cela, vous pouvez casser les blocs en transformant toutes les boules, triangles et carrés de la leçon en boules, puis en programmant les blocs à casser. Je vais réessayer le match de football et Amidakuji que je ne pouvais pas faire.
#référence https://qiita.com/Yt330110713/items/ed6beb74c02515b35248