Hallöchen, habe ein pong spiel pogrammiert und will jtz eine punktezahl angeben die jedesmal um 1 gesteigert wird wenn der ball den schläger berührt, weiß leider überhaupt garnicht wie ich das umsetzten soll deswegen kann ich keine anfänglichen codes verschicken, kann mir da jmd helfen?
Danke im vorraus
MfG AaBbCcDdEeFf
Punktzahl angeben bei Pongspiel
Na, wenn Du schon ein Pongspiel programmiert hast, dann kannst Du das ja zeigen und auch die Stelle, an der Du die Punktezahl erhöhen willst, dann kann man Dir da sagen, dass es
heißen müßte.
Code: Alles auswählen
punktezahl += 1
-
- User
- Beiträge: 24
- Registriert: Donnerstag 21. März 2019, 17:50
@Sirius3
ok willst du jtz den ganzen code? ...ist ja eig egal wo der code fürs erhöhen rein kommt, also ich will halt das wenn der ball den schläger berührt die punktzahl um 1 steigt...wenn du mir sagst von was ich dir den code geben soll, dann zeig ich ihn dir gerne...
ok willst du jtz den ganzen code? ...ist ja eig egal wo der code fürs erhöhen rein kommt, also ich will halt das wenn der ball den schläger berührt die punktzahl um 1 steigt...wenn du mir sagst von was ich dir den code geben soll, dann zeig ich ihn dir gerne...
-
- User
- Beiträge: 24
- Registriert: Donnerstag 21. März 2019, 17:50
ok jut soll ichs hier rein schicken oder lieber screenshot und hochladen?
-
- User
- Beiträge: 24
- Registriert: Donnerstag 21. März 2019, 17:50
ich schicks einfach hiere gleich rein...ist einfacher...AaBbCcDdEeFF hat geschrieben: ↑Samstag 13. April 2019, 18:01ok jut soll ichs hier rein schicken oder lieber screenshot und hochladen?
-
- User
- Beiträge: 24
- Registriert: Donnerstag 21. März 2019, 17:50
Soo das hab ich und es funktoniert prima, aber möchte halt das oben in der mitte die punktzahl erhöht wird
Code: Alles auswählen
import sys
import random
import pygame
import mixer
x = 500
y = 500
sbreite = 100
shoehe = 15
sx = 200
sy = 450
bx = int(x/2)
by = int(y/2)
brad = 15
speed = 0
bxspeed = 1
byspeed = -2
leben = 1
punkte = 0
pygame.init()
pygame.mixer.init()
pygame.display.set_caption("Pong-Pong")
screen = pygame.display.set_mode([x,y])
screen.fill((0,0,0))
pygame.mixer.music.load(r"C:\Users\Franz\Desktop\test\j\Bicycle - Pokémon Omega Ruby & Alpha Sapphire Music Extended.mp3")
pygame.mixer.music.set_volume(0.30)
pygame.mixer.music.play()
pygame.draw.circle(screen, (255,255,0), (bx,by), brad, 0)
pygame.draw.rect(screen, (255,40,0), (sx,sy,sbreite,shoehe), 0)
pygame.display.flip()
def sblock():
global speed
if sx <= 0 or sx >= x-sbreite:
speed = 0
def ballbewegung():
global bx,by
bx += bxspeed
by += byspeed
def reset():
global byspeed,bxspeed,leben,bx,by,sx,sy,speed
sx = 200
sy = 450
bx = int(x/2)
by = int(y/2)
speed = 0
bxspeed = random.randint(-2,2)
if bxspeed == 0:
bxspeed = 1
byspeed = random.randint(-2,2)
if byspeed == 0:
byspeed = 2
screen.fill((0,0,0))
pygame.draw.circle(screen, (255,255,0), (bx,by), brad, 0)
pygame.draw.rect(screen, (255,40,0), (sx,sy,sbreite,shoehe), 0)
pygame.display.flip()
pygame.time.wait(1000)
def ballblock():
global byspeed,bxspeed,leben
if by-brad <= 0:
byspeed *= -1
if bx-brad <= 0:
bxspeed *= -1
if bx+brad >= x:
bxspeed *= -1
if by >= 435 and by <= 440:
if bx >= sx-15 and bx <= sx+sbreite+15:
byspeed *= -1
else:
leben -= 1
reset()
def sbewegung():
global sx
sx += speed
while leben>0:
for event in pygame.event.get():
if event.type == pygame.QUIT: sys.exit()
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
speed = -2
if event.key == pygame.K_RIGHT:
speed = 2
screen.fill((0,0,0))
sbewegung()
sblock()
pygame.draw.rect(screen, (255,40,0), (sx,sy,sbreite,shoehe), 0)
ballbewegung()
ballblock()
pygame.draw.circle(screen, (255,255,0), (bx,by), brad, 0)
pygame.display.flip()
pygame.time.wait(5)
print("haha verloren")
Du stellst doch schon irgendwo fest, dass der Ball vom Schläger abprallen soll, wenn gewisse Bedingungen erfüllt sind.
An der Stelle zählst du dann hoch.
Zur Darstellung des Punktestandes auf dem Bildschirm schau mal hier rein
viewtopic.php?t=43111
da steht irgendwo Code von mir.
An der Stelle zählst du dann hoch.
Zur Darstellung des Punktestandes auf dem Bildschirm schau mal hier rein
viewtopic.php?t=43111
da steht irgendwo Code von mir.
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
- __blackjack__
- User
- Beiträge: 13100
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@AaBbCcDdEeFF: Ich würde als erstes ``global`` loswerden. Auf Modulebene gehört nur Code der Konstanten, Funktionen, und Klassen definiert. Das Hauptprogramm steht üblicherweise in einer Funktion die `main()` heisst. Und Funktionen/Methoden sollten alles was sie ausser Konstanten verwenden, als Argument(e) übergeben bekommen. Im Grunde hast Du im ganzen Programm keine einzige richtige Funktion, sondern missbrauchst Funktionen als eine Art Sprungmarken.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
-
- User
- Beiträge: 24
- Registriert: Donnerstag 21. März 2019, 17:50
ok gut danke ich schau ma rein...ThomasL hat geschrieben: ↑Sonntag 14. April 2019, 08:41 Du stellst doch schon irgendwo fest, dass der Ball vom Schläger abprallen soll, wenn gewisse Bedingungen erfüllt sind.
An der Stelle zählst du dann hoch.
Zur Darstellung des Punktestandes auf dem Bildschirm schau mal hier rein
viewtopic.php?t=43111
da steht irgendwo Code von mir.
-
- User
- Beiträge: 24
- Registriert: Donnerstag 21. März 2019, 17:50
also alle globals in funtionen um schreiben? Wie stell ich das am besten an? haste da vlt nen link wo das erklärt wird?__blackjack__ hat geschrieben: ↑Sonntag 14. April 2019, 09:56 @AaBbCcDdEeFF: Ich würde als erstes ``global`` loswerden. Auf Modulebene gehört nur Code der Konstanten, Funktionen, und Klassen definiert. Das Hauptprogramm steht üblicherweise in einer Funktion die `main()` heisst. Und Funktionen/Methoden sollten alles was sie ausser Konstanten verwenden, als Argument(e) übergeben bekommen. Im Grunde hast Du im ganzen Programm keine einzige richtige Funktion, sondern missbrauchst Funktionen als eine Art Sprungmarken.
Code: Alles auswählen
x = 500
y = 500
sbreite = 100
shoehe = 15
sx = 200
sy = 450
bx = int(x/2)
by = int(y/2)
brad = 15
speed = 0
bxspeed = 1
byspeed = -2
leben = 1
Selbst du in 3 Wochen nicht mehr. Wie wäre es z.B. so:
Code: Alles auswählen
bildschirm_breite = 500
bildschirm_hoehe = 500
schlaeger_breite = 100
schlaeger_hoehe = 15
schlaeger_xpos = 200
schlaeger_ypos = 450
ball_xpos = int(bildschirm_breite / 2)
ball_ypos = int(bildschirm_hoehe / 2)
ball_durchmesser = 15
schlaeger_speed = 0
ball_xspeed = 1
ball_yspeed = -2
anzahl_leben = 1
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
-
- User
- Beiträge: 24
- Registriert: Donnerstag 21. März 2019, 17:50
ja ok stimmt, ist besser so...danke...mach pygame noch nicht so lange deswegen wirst du mehr fehler sehn...ThomasL hat geschrieben: ↑Sonntag 14. April 2019, 10:38Die Bezeichner der Variablen solltest du überdenken, da blickt auf den ersten Blick ja keiner durch.Code: Alles auswählen
x = 500 y = 500 sbreite = 100 shoehe = 15 sx = 200 sy = 450 bx = int(x/2) by = int(y/2) brad = 15 speed = 0 bxspeed = 1 byspeed = -2 leben = 1
Selbst du in 3 Wochen nicht mehr. Wie wäre es z.B. so:Code: Alles auswählen
bildschirm_breite = 500 bildschirm_hoehe = 500 schlaeger_breite = 100 schlaeger_hoehe = 15 schlaeger_xpos = 200 schlaeger_ypos = 450 ball_xpos = int(bildschirm_breite / 2) ball_ypos = int(bildschirm_hoehe / 2) ball_durchmesser = 15 schlaeger_speed = 0 ball_xspeed = 1 ball_yspeed = -2 anzahl_leben = 1
- __blackjack__
- User
- Beiträge: 13100
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@AaBbCcDdEeFF: Funktionen sollten eigentlich in jedem Grundlagentutorial enthalten sein. Kein ``global`` erzwingt dann halt automatisch das man alles ausser Konstanten als Argumente übergeben muss. Und sie können dann nichts ausserhalb verändern – dafür gibt es einen Rückgabewert, der auch ein Tupel bestehend aus mehr als einem Wert sein kann.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
-
- User
- Beiträge: 24
- Registriert: Donnerstag 21. März 2019, 17:50
gut danke ich schau ma was es da gibts, danke aufjedenfall für die tips...__blackjack__ hat geschrieben: ↑Sonntag 14. April 2019, 13:10 @AaBbCcDdEeFF: Funktionen sollten eigentlich in jedem Grundlagentutorial enthalten sein. Kein ``global`` erzwingt dann halt automatisch das man alles ausser Konstanten als Argumente übergeben muss. Und sie können dann nichts ausserhalb verändern – dafür gibt es einen Rückgabewert, der auch ein Tupel bestehend aus mehr als einem Wert sein kann.