Seite 1 von 1

Punktzahl angeben bei Pongspiel

Verfasst: Freitag 12. April 2019, 18:48
von AaBbCcDdEeFF
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

Re: Punktzahl angeben bei Pongspiel

Verfasst: Freitag 12. April 2019, 19:26
von Sirius3
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

Code: Alles auswählen

punktezahl += 1
heißen müßte.

Re: Punktzahl angeben bei Pongspiel

Verfasst: Freitag 12. April 2019, 21:28
von AaBbCcDdEeFF
@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...

Re: Punktzahl angeben bei Pongspiel

Verfasst: Samstag 13. April 2019, 12:10
von Sirius3
Die Frage ist entweder trivial, weil an der Stelle, wo der Ball am Schläger abprallt, auch die Stelle ist, wo man eine Variable um 1 erhöht, oder es ist nicht so einfach, dann kann man ohne Code nicht helfen.

Re: Punktzahl angeben bei Pongspiel

Verfasst: Samstag 13. April 2019, 18:01
von AaBbCcDdEeFF
Sirius3 hat geschrieben: Samstag 13. April 2019, 12:10 Die Frage ist entweder trivial, weil an der Stelle, wo der Ball am Schläger abprallt, auch die Stelle ist, wo man eine Variable um 1 erhöht, oder es ist nicht so einfach, dann kann man ohne Code nicht helfen.
ok jut soll ichs hier rein schicken oder lieber screenshot und hochladen?

Re: Punktzahl angeben bei Pongspiel

Verfasst: Samstag 13. April 2019, 18:42
von AaBbCcDdEeFF
AaBbCcDdEeFF hat geschrieben: Samstag 13. April 2019, 18:01
Sirius3 hat geschrieben: Samstag 13. April 2019, 12:10 Die Frage ist entweder trivial, weil an der Stelle, wo der Ball am Schläger abprallt, auch die Stelle ist, wo man eine Variable um 1 erhöht, oder es ist nicht so einfach, dann kann man ohne Code nicht helfen.
ok jut soll ichs hier rein schicken oder lieber screenshot und hochladen?
ich schicks einfach hiere gleich rein...ist einfacher...

Re: Punktzahl angeben bei Pongspiel

Verfasst: Samstag 13. April 2019, 18:43
von AaBbCcDdEeFF
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")

Re: Punktzahl angeben bei Pongspiel

Verfasst: Sonntag 14. April 2019, 08:41
von ThomasL
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.

Re: Punktzahl angeben bei Pongspiel

Verfasst: Sonntag 14. April 2019, 09:56
von __blackjack__
@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.

Re: Punktzahl angeben bei Pongspiel

Verfasst: Sonntag 14. April 2019, 10:28
von AaBbCcDdEeFF
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.
ok gut danke ich schau ma rein...

Re: Punktzahl angeben bei Pongspiel

Verfasst: Sonntag 14. April 2019, 10:32
von AaBbCcDdEeFF
__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.
also alle globals in funtionen um schreiben? Wie stell ich das am besten an? haste da vlt nen link wo das erklärt wird?

Re: Punktzahl angeben bei Pongspiel

Verfasst: Sonntag 14. April 2019, 10:38
von ThomasL

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
Die Bezeichner der Variablen solltest du überdenken, da blickt auf den ersten Blick ja keiner durch.
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

Re: Punktzahl angeben bei Pongspiel

Verfasst: Sonntag 14. April 2019, 10:52
von AaBbCcDdEeFF
ThomasL hat geschrieben: Sonntag 14. April 2019, 10:38

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
Die Bezeichner der Variablen solltest du überdenken, da blickt auf den ersten Blick ja keiner durch.
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
ja ok stimmt, ist besser so...danke...mach pygame noch nicht so lange deswegen wirst du mehr fehler sehn...

Re: Punktzahl angeben bei Pongspiel

Verfasst: Sonntag 14. April 2019, 13:10
von __blackjack__
@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.

Re: Punktzahl angeben bei Pongspiel

Verfasst: Sonntag 14. April 2019, 18:54
von AaBbCcDdEeFF
__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.
gut danke ich schau ma was es da gibts, danke aufjedenfall für die tips...