Programmieren – die besten Beiträge

Flask WTForms zum Anchor gehen, wenn Form nicht valid?

Ich habe ein Kontaktformular am Ende einer Webseite. Wenn ich das submitte und das Form ist valid, werde ich auf /contact weitergeleitet, der dann wieder auf / redirected und zum Anchor "contact-us" springt - soweit alles gut (vllt. aber auch nicht wirklich elegant)

@app.route("/", methods=['POST', 'GET'])
def index():
    form = ContactForm()
    if form.validate_on_submit():
        send_mail(request.form)
        return redirect('/contact')
    return render_template('index.html', form=form)


#Redirect
@app.route('/contact')
def success():
    form = ContactForm()
    return redirect(url_for('index', _anchor='contact-us'))

Wenn das Form aber nicht valid ist, werde ich natürlich nicht weitergeleitet, aber die Seite wird durch das SubmitField neu geladen und ich bin wieder ganz oben. So weiß der User nicht, dass die Kontaktanfrage fehgeschlagen (Fehler, wie z.B invalid Email werden unter dem Input Field angezeigt), da er erstmal runterscrollen müsste.

Wie kann ich bei nicht valid nach dem Reload wieder zum Anchor springen? (Alert Window oder so für den Fehler möchte ich vermeiden)

Außerdem: Ich hätte gerne eine Nachricht unter dem Form, wenn es erfolgreich gesendet wurde. Kann ich beim Redirect ein Argument mitgeben, sodass ein Text eingeblendet wird oder gibt es dafür eine elegante Lösung? ^^

Computer, Technik, Webseite, programmieren, Python, Webentwicklung, Flask

Greenfoot/Java: Wie verhindere ich, dass sich die beiden Charaktere gegenseitig überlappen und wie füge ich eine Lebensanzeige hinzu?

Also ich arbeite in der Schule im Moment mit Greenfoot und programmiere eine Art Street Fighter. Ich habe bei den folgenden beiden Dingen Probleme:

Also erstens kriege ich es nicht hin, dass die beiden Charaktere sich gegenseitig nicht überlappen. Sie rennen also durcheinander durch.

Das zweite Problem ist Folgendes: Ich möchte eine Lifebar, also eine Lebensanzeige hinzufügen.

Ich bin noch nicht dabei, es zu animieren, sondern einfach dabei, dass das Programm stoppt, wenn der Spieler keine Leben mehr hat. Es funktioniert aber einfach nicht. Es stoppt einfach immer viel zu früh, sobald ich Kontakt zum anderen Spieler habe, aber noch nicht schlage.

Ich kann leider nicht den gesamten Code hier reinkopieren, da er die Maximallänge überschreitet. Wer mir so nicht weiterhelfen kann, sich aber nicht mit dem Thema auskennt, der kann mich privat anschreiben. Dann kann ich die ganze Datei rüberschicken.

Hier also nur der wahrscheinlich relevante Teil des Codes:

In fighter1:

public static boolean hit = false;

public void attack1() {
  if (Greenfoot.isKeyDown("h") && !Greenfoot.isKeyDown("k") && !Greenfoot.isKeyDown("b")) {
    setImage("FH.png");
    hit = true;
  }
  else {
    hit = false;
  }

  if (!Greenfoot.isKeyDown("h") && !Greenfoot.isKeyDown("k") && !Greenfoot.isKeyDown("b")) {
    setImage("FN.png");
  }
}

Fighter 2:

public void lifebar() {
  if (Fighter1.hit = true && isTouching(Fighter1.class)) {
    lifebar = lifebar - 50;
  }

  if (lifebar <= 0) {
    Greenfoot.stop();
  }
}
Computer, programmieren, Java, Greenfoot

Meistgelesene Beiträge zum Thema Programmieren