Edycja Gry w pythonie

0

Jestem nowy w pythonie i mam pytanie : Co i gdzie muszę wpisać aby zamiast jednej piłki w grze miał ich tyle ile wpiszę. Z góry dziękuję :)

from tkinter import *
import random
import time

class Piłka:
    def __init__(self, płótno, kolor):
        self.płótno = płótno
        self.rakietka = rakietka
        self.id = płótno.create_oval(10, 10, 25, 25, fill=kolor)
        self.płótno.move(self.id, 245, 100)
        qqrq = [-1, -2, -3, -2, -1, 1, 2, 3, 4, 5, 6, 7]
        random.shuffle(qqrq)
        self.x = qqrq[0]
        random.shuffle(qqrq)
        self.y = qqrq[0]
        random.shuffle(qqrq)
        self.x = qqrq[0]
        random.shuffle(qqrq)
        self.y = qqrq[0]
        self.wysokość_płótna = self.płótno.winfo_height()
        self.szerokość_płótna = self.płótno.winfo_width()
        self.upadek_na_ziemię = False



    def trafienie_w_piłkę(self, pozycja):
        pozycja_rakietki = self.płótno.coords(self.rakietka.id)
        if pozycja[2] >= pozycja_rakietki[0] and pozycja[0] <= pozycja_rakietki[2]:
            if pozycja[3] >= pozycja_rakietki[1] and pozycja[3] <= pozycja_rakietki[3]:
                return True
        return False

    def rysuj(self):
        self.płótno.move(self.id, self.x, self.y)
        pozycja = self.płótno.coords(self.id)
        if pozycja[1] <=0:
            self.y = self.y * -1
        if pozycja[3] >= self.wysokość_płótna:
            self.upadek_na_ziemię = True
        if self.trafienie_w_piłkę(pozycja) == True:
            self.y = self.y * -1
        if pozycja[0] <= 0:
            self.x = self.x * -1
        if pozycja[2] >= self.szerokość_płótna:
            self.x = -3

class Rakietka:
    def __init__(self, płótno, kolor):
        self.płótno = płótno
        self.id = płótno.create_rectangle(0, 0, 100, 10, fill=kolor)
        self.płótno.move(self.id, 200, 300)
        self.x = 0
        self.szerokość_płótna = self.płótno.winfo_width()
        self.płótno.bind_all('<KeyPress-Left>', self.przesuń_w_lewo)
        self.płótno.bind_all('<KeyPress-Right>', self.przesuń_w_prawo)

    def rysuj(self):
        self.płótno.move(self.id, self.x, 0)
        pozycja = self.płótno.coords(self.id)
        if pozycja[0] <= 0:
            self.x = 0
        elif pozycja[2] >= self.szerokość_płótna:
            self.x = 0

    def przesuń_w_lewo(self, zderzenie):
        self.x = -2

    def przesuń_w_prawo(self, zderzenie):
        self.x = 2

tk = Tk()
tk.title("Gra")
tk.resizable(0, 0)
tk.wm_attributes("-topmost", 1)
płótno = Canvas(tk, width=500, height=400, bd=0, highlightthickness=0)
płótno.pack()
tk.update()
rakietka = Rakietka(płótno, 'blue')
piłka = Piłka(płótno, 'red')

while 1:
    if not piłka.upadek_na_ziemię:
        piłka.rysuj()
        rakietka.rysuj()
    tk.update_idletasks()
    tk.update()
    time.sleep(0.01)
0

Napisz tę grę sam, to będziesz wiedział ;-)
Programowanie nie polega na bezmyślnym kopiowaniu cudzych kodów.

0

Nie chodzi o kopiowanie. Chodzi o to, że mam ten kod z książki i chciałbym tylko wiedzieć jak się uruchamia daną ilość razy(taką jaką sam dopiszę) daną klasę(piłkę). Bardzo jestem ciekawy i byłbym wdzięczny gdyby ktoś pomógł mi napisać ten kod do końca. Jest to w celu tylko i wyłącznie edukacyjnym gdyż chciałbym się bardzo dowiedzieć konkretnie tego. Gra ta jest skopiowana z książki, którą kupiłem.

0

Oznajmiasz, że "nie chodzi o kopiowanie", po czym sam przyznajesz, że tabulator w tabulator przepisałeś ten kod z książki.

Naprawdę, jeśli czegoś nie rozumiesz, to zapytaj, ale konkretnie. A jeśli nie rozumiesz nic, wróć do poprzedniego rozdziału książki.

0

Wiem nie umiem się wysłowić. Konkretnie proszę o dopisanie do programu elementu, który będzie tworzył tyle piłek ile napiszę bo nie umiem tego sam zrobić. Jeśli dałbyś radę byłbym wdzięczny o wytłumaczenie razem z programem. Na prawdę mi zależy na tym ale nie wiem jak :/ Nie potrafię znaleźć w książce tego jak to zrobić więc za pomoc będę bardzo wdzięczny.

0

Piszesz, że robisz to edukacyjnie, lecz wcale sam nie chcesz zrozumieć jak ten kod działa, wtf?

0

Jak kod działa wiem ale nie wiem czego użyć do tego o co proszę. Nie wiem czy w ogóle rozumiesz o co mi chodzi. Ja wiem dokładnie o co mi chodzi ale mogłem przypadkiem pominąć coś i nie przedstawiłem dobrze sytuacji. Proszę tylko o napisanie czego mam użyć do zrobienia tego pomnożenia piłek i tylko o to.

0

Skoro dokładnie rozumiesz kod, z czym konkretnie masz problem?

Bo póki co to napisałeś tyle co no rozumiem ten kod, ale nie rozumiem, poprowadź mnie za rączkę, choć rozumiem ten kod.

0

Nie to nie ma sensu. Ja nie potrafię powiedzieć inaczej. Chodzi mi o to jakiej: Funkcji, Klasy, Listy czy czegoś mam użyć do zrobienia tego. Chodzi mi o to że to co mam to wiem skąd ale nie wiem jak to zmienić. Próbowałem różnie ale nie potrafię

0

Pisz kod po angielsku, nawet jak masz książkę po polsku. Kod się zawsze piszę w języku angielskim i w dodatku nie będzie to aż tak bezmyślne ctrl c ctrl v

1

@KoXu: Podrzucam Ci kod (bez fajerwerków) uzupełniający do tego, co masz..


COLORS = ['green', 'blue', 'black', 'white', 'yellow']

class MutliBall:
    def __init__(self):
        self.balls = []

    def create_n_balls(self, n, canvas):
        for _ in range(0, n):
            b = Piłka(canvas, random.choice(COLORS))
            self.balls.append(b)

    def draw_balls(self):
        for ball in self.balls:
            ball.rysuj()


balls = MutliBall()
balls.create_n_balls(10, płótno)

while 1:
    if not piłka.upadek_na_ziemię:
        balls.draw_balls()
        ..
   ..

1 użytkowników online, w tym zalogowanych: 0, gości: 1