Hilfe beim Schulprojekt

Alles rund um die Programmierung mit Qt
Antworten
GreatC
Beiträge: 2
Registriert: 3. Januar 2011 11:08

Hilfe beim Schulprojekt

Beitrag von GreatC »

Hallo,

ich habe Probleme bei einem Schulprojekt und zwar möchte ich das eine lcdnumber hoch gezählt wird wenn ich in meinem PaintEvent einen Intersect auslöse nur wenn ich versuche eine Globale Variabele zu erstellen kriege ich nur Probleme mit dem Programm.

Code: Alles auswählen

            
       if (kugel.intersects( *rect ) == true)
            {
                delete point;
                barrierList.removeFirst();
                canonBall.removeOne(point);
                score+=10;
            }

Code: Alles auswählen

  lPoints->valueChanged(score);

Code: Alles auswählen

#ifndef CANONFIELD_H
#define CANONFIELD_H

#include <QtGui>


class CanonField : public QWidget
{
    Q_OBJECT

public:
    CanonField(QWidget *parent = 0);
    bool space_pressed;
    int *score;


public slots:
    void shoot();                           // Schiesst eine Kugel ab

protected:
    void paintEvent(QPaintEvent *event);    // zeichnet das Spielfeld
    void paintEvent2(QPainter &painter);   // zeichnet sie Gegner
    void keyPressEvent(QKeyEvent *event);   // wird aufgerufen, wenn eine Taste
    void keyReleaseEvent(QKeyEvent *event); // gedrückt bzw. losgelassen wird

private:
    void moveCanon(int newPosition);
    QRect canonRect() const;

    int currentPosition;        // aktuelle Position des Schiffs
    int shootTime;              // wird für den QTimer benötigt
    QTimer *timerField;         // Timer für die Aktualisierung des Spielfeldes
    QTimer *timerShot;          // Timer um die Schussfrequenz zu steuern
    QList<QPoint*> canonBall;   // Liste aller Kanonenkugeln auf dem Spielfeld
    QTimer *timerBarrier;
    QList<QRect*> barrierList;
};

#endif // CANONFIELD_H
angehängt ist noch ein Screenshot des "Fertigen" Programms[/i]
Dateianhänge
Unbenannt.JPG
Unbenannt.JPG (59.05 KiB) 1706 mal betrachtet
Mit freundlichen Grüßen
C
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

1. gloale Variablen sind meistens nicht sinnvoll und 'böse'
2. erst delete point und dann ein canonBall.removeOne(point) wohl nicht unbedingt das was du willst da der point ja ins Nirvana zeigt
3. 'geht nicht' ist keine Fehlerbeschreibung... - für Crashes gibt es einen Debugger und auch ein kleines (komplettes) Testprogramm ist hilfreich.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
GreatC
Beiträge: 2
Registriert: 3. Januar 2011 11:08

Beitrag von GreatC »

Das Programm Crasht ja nicht es lässt sich nur nicht ausführen weil er die Variabele nicht declarieren kann
Mit freundlichen Grüßen
C
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Es läst sich also nicht kompilieren? Selbst da sollte es eine sinnvolle Fehlermeldung geben.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

GreatC hat geschrieben:Das Programm Crasht ja nicht es lässt sich nur nicht ausführen weil er die Variabele nicht declarieren kann
Wenn eine Variable nicht deklariert werden kann (komische Formulierung, k.A. was du genau meinst) meckert der Compiler, du solltest gar nicht erst zur Ausführung kommen!

Dein Beispielcode sagt mir auch gar nicht, wo da jetzt eine globale Variable sein soll, wie du darauf zugreifst, usw. Mir persönlich fehlt auch noch die Deklaration von "IPoints". valueChanged() hört sich jedenfalls verdächtig nach nem SIGNAL (QSpinBox?) an - das so aufrufen geht nicht wirklich...

Reduzier doch einfach mal dein Programm auf ein nötiges Minimum, so dass man mit ein paar Blicken deinen Code verstehen kann. Wenn das so nicht geht, packst du halt deinen ganzen Code in ein .zip und hängst es hier an einen Post an. Je weniger Code, um so höher der Wille zu Helfen :)
Antworten