Kezdőoldal » Számítástechnika » Egyéb kérdések » Miért nem működik ez a Python3...

Anonymus070225 kérdése:

Miért nem működik ez a Python3 pingpong program?

Figyelt kérdés

import turtle


#Ablak


ablak = turtle.Screen()

ablak.setup(width=800, height=600)

ablak.bgcolor('black')

ablak.title('PONG')

ablak.tracer(0)


# Bal oldali ütő


bal_uto = turtle.Turtle()

bal_uto.speed(0)

bal_uto.shape('square')

bal_uto.shapesize(stretch_wid=5, stretch_len=1)

bal_uto.color('blue')

bal_uto.penup()

bal_uto.goto(-350, 0)


# Jobb oldali ütő


jobb_uto = turtle.Turtle()

jobb_uto.speed(0)

jobb_uto.shape('square')

jobb_uto.shapesize(stretch_wid=5, stretch_len=1)

jobb_uto.color('red')

jobb_uto.penup()

jobb_uto.goto(350, 0)


# Labda


labda = turtle.Turtle()

labda.speed(0)

labda.shape('circle')

labda.color('yellow')

labda.penup()

labda.goto(0, 0)

labda.változásX = 2

labda.változásY = -2


#pontszám


jobb_pontszam = 0

bal_pontszam = 0


pontszam = turtle.Turtle()

pontszam.speed(0)

pontszam.color('white')

pontszam.penup()

pontszam.hideturtle

pontszam.goto(0, 260)

pontszam.write(f'Jobb játékos: {jobb_pontszam} Bal játékos: {bal_pontszam}', align='center', font=('Curier', 24, 'normal'))


#billentyűzet kezelő


def bal_uto_fel():

y = bal_uto.ycor()

y += 30

bal_uto.sety(y)

def bal_uto_le():

y = bal_uto.ycor()

y -= 30

bal_uto.sety(y)

def jobb_uto_fel():

y = jobb_uto.ycor()

y += 30

jobb_uto.sety(y)

def jobb_uto_le():

y = jobb_uto.ycor()

y -= 30

jobb_uto.sety(y)


#billenyűzet olvasó


ablak.onkey(bal_uto_fel, 'w')

ablak.onkey(bal_uto_le, 's')

ablak.onkey(jobb_uto_fel, 'Up')

ablak.onkey(jobb_uto_le, 'Down')


ablak.listen()


while True:

ablak.update()

labda.setx(labda.xcor() + labda.változásX)

labda.sety(labda.ycor() + labda.változásY)


#tetejéről pattanjon vissza


if labda.ycor() > 288:

labda.sety(288)

labda.változásY *= -1


#aljárol pattanjon vissza


if labda.ycor() < -288:

labda.sety(-288)

labda.változásY *= -1


#jobb oldal érintése

if labda.xcor() > 388:

labda.goto(0, 0)

labda.változásX *= -1

bal_pontszam += 1

pontszam.clear()

pontszam.write(f'Jobb játékos: {jobb_pontszam} Bal játékos: {bal_pontszam}', align='center', font=('Curier', 24, 'normal'))


#bal oldal érintése

if labda.xcor() < -388:

labda.goto(0, 0)

labda.változásX *= -1

jobb_pontszam += 1

pontszam.clear()

pontszam.write(f'Jobb játékos: {jobb_pontszam} Bal játékos: {bal_pontszam}', align='center', font=('Curier', 24, 'normal'))


#jobb oldali ütőről visszapattan

if jobb_uto.xcor()-20 < labda.xcor() < jobb_uto.xcor() and jobb_uto.ycor()-40 < labda.ycor < jobb_uto.ycor()+40:

labda.setx(jobb_uto.xcor()-20)

labda.változásX *= -1


#bal oldali ütőről visszapattan

if bal_uto.xcor()+20 > labda.xcor() > bal_uto.xcor() and bal_uto.ycor()-40 < labda.ycor < bal_uto.ycor()+40:

labda.setx(bal_uto.xcor()+20)

labda.változásX *= -1



Elindul a program ezután egyszer pattan alul jobbra majd bezár a program.

Nem tudom mi lehet a gond!


Köszi előre a válaszokat!



2020. máj. 22. 15:30
 1/1 anonim ***** válasza:
100%

0. Forráskódot - pláne Python esetén, ahol az indentálás egy fontos dolog - tessék kódmegosztó oldalon (Pastebin, Ghostbin, Hastebin) keresztül megosztani. Átláthatóbb, mint ide beömlesztve


1. Ékezetes változónevekről tessék leszokni.

Illetőleg ha már ékezeteket használsz a forráskódban javallott az első sorba az alábbit berakni:

# -*- coding: utf-8 -*-

így nem fog nyafogni az interpreter.


2. A betűtípus neve Courier - mint a futár angolul - és nem Curier.


3. Tessék elolvasni és értelmezni a fordító által visszadobott hibakódot:

"if jobb_uto.xcor()-20 < labda.xcor() < jobb_uto.xcor() and jobb_uto.ycor()-40 < labda.ycor < jobb_uto.ycor()+40:

TypeError: '<' not supported between instances of 'int' and 'method'"


A problémát a

jobb_uto.ycor()-40 < labda.ycor

kifejezés okozza: a

jobb_uto.ycor() - 40

kifejezés visszatérési értéke egy szám, a

labda.ycor

kifejezésé pedig egy metódus - a kettő nem összehasonlítható.


Helyesen így nézne ki:

jobb_uto.ycor() - 40 < labda.ycor()

ugyanez a bal_uto esetén is.


Szóval minimum így:

[link]

2020. máj. 22. 17:56
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!