root.overrideredirect(0)
Verfasst: Dienstag 27. Oktober 2020, 18:56
Hi,
vielleicht ein doofes betreff.
Habe hier im Forum ein einfaches grafische Spiel entdeckt und zum üben heruntergeladen:
Ich versuch das auch mal vom Code Anzuhängen - aber sorry - letzte Mal habe ich hier in de Oberfläche Code und Kommentar total verhuddelt.
1. die Frage:
je nach root.overrideredirect(0,1) werden weiter Eier kreiert.
In der Fensterversion hört der Prozess auf; warum nur da?
2. falls ich den Programmcode sauber hochgeladen bekomme:
Im der Windows Version kommen von tkinter diverse Fehlermeldungen:
Das zu analysieren fällt mir noch schwer.
3. Wollte dieses Spiel auch mal auf meinem Tablett laufen lassen.
Da gibt es denn aber keine rechts - oder links Taste.
4. Wenn ich das Proggi editiert habe, erfolgt der erste Lauf in einem m.E. zu kleinem Font.
Weitere Runs erfolgen dann im 18er (?) Font:
Ob 18 oder sonst was; warum stimmt der Font beim ersten Start nicht?
Habt Ihr vielleicht einen Beispiel - Link, um mich auf Maus- oder Tablett-Orientierung einzustimmen.
Danke für irgendwelche Tipps - Bin noch Beginner.
Klaus
from random import randrange
from tkinter import Canvas, Tk, messagebox, font
root = Tk()
w, h = root.winfo_screenwidth(), root.winfo_screenheight()
root.overrideredirect(1) # (0) eröffnet als Fenster
root.geometry("%dx%d+0+0" % (w, h))
canvas_width = w
canvas_height = h
c = Canvas(root, width=canvas_width, height=canvas_height, background="deep sky blue")
c.create_rectangle(-5, canvas_height - 300, canvas_width + 50, canvas_height + 50, fill="sea green", width=0)
c.create_oval(-100, -100, 140, 140, fill="orange", width=0)
c.pack()
ei_width = 45
ei_height = 55
global ei_punktzahl
ei_punktzahl = 10
global ei_tempo
ei_tempo = 500
global ei_intervall
ei_intervall = 4000
global schwierigkeit
schwierigkeit = 0.95
global verbleibende_leben
korb_color = "blue"
korb_width = 100
korb_height = 100
korb_start_x = canvas_width / 2 - korb_width / 2
korb_start_y = canvas_height - korb_height - 20
korb_start_x2 = korb_start_x + korb_width
korb_start_y2 = korb_start_y + korb_height
korb = c.create_arc(korb_start_x, korb_start_y, korb_start_x2, korb_start_y2, start=200, extent=140, style="arc", outline=korb_color, width=3)
game_font = font.nametofont("TkFixedFont")
game_font.config(size=18)
global breite
breite = w
breite_text = c.create_text(10, 35, anchor="nw", font=game_font, fill="darkblue", text="Breite: " + str(breite))
global hoehe
hoehe = h
hoehe_text = c.create_text(10, 60, anchor="nw", font=game_font, fill="darkblue", text="Höhe: " + str(hoehe))
global punktzahl
punktzahl = 0
punktzahl_text = c.create_text(10, 10, anchor="nw", font=game_font, fill="darkblue", text="Punktzahl: " + str(punktzahl))
verbleibende_leben = 10
leben_text = c.create_text(canvas_width - 10, 10, anchor="ne", font=game_font, fill="darkblue", text="Leben " + str(verbleibende_leben))
eier = []
def create_ei():
x = randrange(10, w-100)
y = 40
neues_ei = c.create_oval(x, y, x + ei_width, y + ei_height, fill="yellow", width=0)
eier.append(neues_ei)
root.after(ei_intervall, create_ei)
def move_eier():
for ei in eier:
(ei_x, ei_y, ei_x2, ei_y2,) = c.coords(ei)
c.move(ei, 0, 10)
if ei_y2 > canvas_height:
ei_gefallen(ei)
root.after(ei_tempo, move_eier)
def ei_gefallen(ei):
eier.remove(ei)
c.delete(ei)
verliere_ein_leben()
if verbleibende_leben == 0:
messagebox.showinfo("Game Over", "Punkte: " + str(punktzahl))
root.destroy()
exit
def verliere_ein_leben():
global verbleibende_leben
verbleibende_leben = verbleibende_leben - 1
c.itemconfigure(leben_text, text="Leben: " + str(verbleibende_leben))
def check_fang():
(korb_x, korb_y, korb_x2, korb_y2) = c.coords(korb)
for ei in eier:
(ei_x, ei_y, ei_x2, ei_y2,) = c.coords(ei)
if korb_x < ei_x and ei_x2 < korb_x2 and korb_y2 - ei_y2 < 40:
eier.remove(ei)
c.delete(ei)
erhoehe_punktzahl(ei_punktzahl)
root.after(100, check_fang)
def erhoehe_punktzahl(points):
global punktzahl, ei_tempo, ei_intervall
punktzahl = punktzahl + 1
ei_tempo = int(ei_tempo * schwierigkeit)
ei_intervall = int(ei_intervall * schwierigkeit)
c.itemconfigure(punktzahl_text, text="Punktzahl: " + str(punktzahl))
def move_left(event):
(x1, y1, x2, y2) = c.coords(korb)
if x1 > 0:
c.move(korb, -20, 0)
def move_right(event):
(x1, y1, x2, y2) = c.coords(korb)
if x2 < canvas_width:
c.move(korb, 20, 0)
c.bind("<Left>", move_left)
c.bind("<Right>", move_right)
c.focus_set()
root.after(5000, create_ei)
root.after(500, move_eier)
root.after(500, check_fang)
root.mainloop()
vielleicht ein doofes betreff.
Habe hier im Forum ein einfaches grafische Spiel entdeckt und zum üben heruntergeladen:
Ich versuch das auch mal vom Code Anzuhängen - aber sorry - letzte Mal habe ich hier in de Oberfläche Code und Kommentar total verhuddelt.
1. die Frage:
je nach root.overrideredirect(0,1) werden weiter Eier kreiert.
In der Fensterversion hört der Prozess auf; warum nur da?
2. falls ich den Programmcode sauber hochgeladen bekomme:
Im der Windows Version kommen von tkinter diverse Fehlermeldungen:
Das zu analysieren fällt mir noch schwer.
3. Wollte dieses Spiel auch mal auf meinem Tablett laufen lassen.
Da gibt es denn aber keine rechts - oder links Taste.
4. Wenn ich das Proggi editiert habe, erfolgt der erste Lauf in einem m.E. zu kleinem Font.
Weitere Runs erfolgen dann im 18er (?) Font:
Ob 18 oder sonst was; warum stimmt der Font beim ersten Start nicht?
Habt Ihr vielleicht einen Beispiel - Link, um mich auf Maus- oder Tablett-Orientierung einzustimmen.
Danke für irgendwelche Tipps - Bin noch Beginner.
Klaus
from random import randrange
from tkinter import Canvas, Tk, messagebox, font
root = Tk()
w, h = root.winfo_screenwidth(), root.winfo_screenheight()
root.overrideredirect(1) # (0) eröffnet als Fenster
root.geometry("%dx%d+0+0" % (w, h))
canvas_width = w
canvas_height = h
c = Canvas(root, width=canvas_width, height=canvas_height, background="deep sky blue")
c.create_rectangle(-5, canvas_height - 300, canvas_width + 50, canvas_height + 50, fill="sea green", width=0)
c.create_oval(-100, -100, 140, 140, fill="orange", width=0)
c.pack()
ei_width = 45
ei_height = 55
global ei_punktzahl
ei_punktzahl = 10
global ei_tempo
ei_tempo = 500
global ei_intervall
ei_intervall = 4000
global schwierigkeit
schwierigkeit = 0.95
global verbleibende_leben
korb_color = "blue"
korb_width = 100
korb_height = 100
korb_start_x = canvas_width / 2 - korb_width / 2
korb_start_y = canvas_height - korb_height - 20
korb_start_x2 = korb_start_x + korb_width
korb_start_y2 = korb_start_y + korb_height
korb = c.create_arc(korb_start_x, korb_start_y, korb_start_x2, korb_start_y2, start=200, extent=140, style="arc", outline=korb_color, width=3)
game_font = font.nametofont("TkFixedFont")
game_font.config(size=18)
global breite
breite = w
breite_text = c.create_text(10, 35, anchor="nw", font=game_font, fill="darkblue", text="Breite: " + str(breite))
global hoehe
hoehe = h
hoehe_text = c.create_text(10, 60, anchor="nw", font=game_font, fill="darkblue", text="Höhe: " + str(hoehe))
global punktzahl
punktzahl = 0
punktzahl_text = c.create_text(10, 10, anchor="nw", font=game_font, fill="darkblue", text="Punktzahl: " + str(punktzahl))
verbleibende_leben = 10
leben_text = c.create_text(canvas_width - 10, 10, anchor="ne", font=game_font, fill="darkblue", text="Leben " + str(verbleibende_leben))
eier = []
def create_ei():
x = randrange(10, w-100)
y = 40
neues_ei = c.create_oval(x, y, x + ei_width, y + ei_height, fill="yellow", width=0)
eier.append(neues_ei)
root.after(ei_intervall, create_ei)
def move_eier():
for ei in eier:
(ei_x, ei_y, ei_x2, ei_y2,) = c.coords(ei)
c.move(ei, 0, 10)
if ei_y2 > canvas_height:
ei_gefallen(ei)
root.after(ei_tempo, move_eier)
def ei_gefallen(ei):
eier.remove(ei)
c.delete(ei)
verliere_ein_leben()
if verbleibende_leben == 0:
messagebox.showinfo("Game Over", "Punkte: " + str(punktzahl))
root.destroy()
exit
def verliere_ein_leben():
global verbleibende_leben
verbleibende_leben = verbleibende_leben - 1
c.itemconfigure(leben_text, text="Leben: " + str(verbleibende_leben))
def check_fang():
(korb_x, korb_y, korb_x2, korb_y2) = c.coords(korb)
for ei in eier:
(ei_x, ei_y, ei_x2, ei_y2,) = c.coords(ei)
if korb_x < ei_x and ei_x2 < korb_x2 and korb_y2 - ei_y2 < 40:
eier.remove(ei)
c.delete(ei)
erhoehe_punktzahl(ei_punktzahl)
root.after(100, check_fang)
def erhoehe_punktzahl(points):
global punktzahl, ei_tempo, ei_intervall
punktzahl = punktzahl + 1
ei_tempo = int(ei_tempo * schwierigkeit)
ei_intervall = int(ei_intervall * schwierigkeit)
c.itemconfigure(punktzahl_text, text="Punktzahl: " + str(punktzahl))
def move_left(event):
(x1, y1, x2, y2) = c.coords(korb)
if x1 > 0:
c.move(korb, -20, 0)
def move_right(event):
(x1, y1, x2, y2) = c.coords(korb)
if x2 < canvas_width:
c.move(korb, 20, 0)
c.bind("<Left>", move_left)
c.bind("<Right>", move_right)
c.focus_set()
root.after(5000, create_ei)
root.after(500, move_eier)
root.after(500, check_fang)
root.mainloop()