Problem bei Erstellung eines Dartspiels

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Shuichi
User
Beiträge: 1
Registriert: Freitag 13. Juni 2008, 21:20

Hallo an alle,

ich arbeite momentan daran ein Dartspiel via xTurtle zu programmieren und habe dabei einige Probleme, wobei ihr mir hoffentlich helfen könnt.

Ersteinmal was am Ende rauskommen soll: Links oben ist eine Dartscheibe, rechts daneben bewegt sich ein Pfeil von oben nach unten und bei einem Mausklick fliegt er nach links los und bleibt dann in der Mitte der Dartscheibe stehen - die Punkte errechnen sich dann aus der Y-Koordinate.

Die Anzeige der Dartscheibe, des Pfeils und die Bewegung des Pfeils funktioniert auch soweit. Problem ist nur: Bei einem Mausklick soll sich ja der Pfeil dann nur auf der X-Achse bewegen, aber beim move Befehl muss ja auch eine Y-Angabe da sein, diese variiert aber und kann deshalb nicht absolut angegeben werden. Ich brauche also einen Befehl um den derzeitigen Y-Wert, den der Pfeil beim Mausklick hat, auszulesen.

Hier ist der Quellcode meines derzeitigen Programms:

Code: Alles auswählen

# -*- coding: cp1252 -*-

## Import Modules ##
from xturtle import *
import sys, math, random, time, winsound

## Variables ##
Version = "0.10 (Alpha)" # Program Version
Name = "Name" # Coders
Trys = 3
screen = getscreen()

def Window():
    hideturtle()
    title("Darts - by " + Name + " | ver." + Version)
    Turtle(width = 908, height = 620)
    penup()
    bgpic("bg.gif")
    speed(1)
    screen.onkey(Pfeil, "space")
    screen.listen()

def Pfeil():
    hideturtle()
    penup()
    goto(300,0)
    st()
    addshape("dart.gif")
    shape("dart.gif")
    while not screen.onclick(Test):
        goto(300,-320)
        goto(300,320)
    if screen.onclick(Test):
        pass

def Test():
    pass

Window()
Die Dartscheibe ist hier das Hintergrundbild (bg.gif), der Pfeil ist die Datei "dart.gif".

Vielen Dank im Vorraus!
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Ändere mal Zeile 36/37 so um. Den Rest verstehst du dann selbst.

Code: Alles auswählen

def Test(x,y):
    print x,y
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Noch ein paar ganz kleine Anmerkungen: Gewöhn Dir am besten die *-Importe ganz ab, bei den Modules sys, math, ... vermeidest du es ja schon.

Und dann könntest du dier noch kurz PEP8 anschauen. Namen von Konstanten schreibt man per Konvention vollständig in Großbuchstaben und Funktionen in Kleinbuchstaben.

Bis dann.
Antworten