Programmieren – die neusten Beiträge

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

C++ funktion() should have been declared inside namespace?

Hallo, ich arbeite gerade an einer Header Datei in C++. Aber ich kann nun nicht mehr weitermachen weil ständig ein Fehler auftaucht:

meinHeader.h:21:38: error: 'void meinNamespace::draw(int, int)' should have been declared inside 'meinNamespace'

Ich kann im Internet nichts hilfreiches finden und weiß nicht warum der Fehler auftaucht. Hier die betroffenen Codeabschnitte:

#include <Windows.h>
#include <WinUser.h>
#include <string>
#include <stdio.h>
#include <stdlib.h>

#include "meinHeader.h"

#define PI 3.14

enum meinNamespace::color {
    DARKBLUE = 1, 
    DARKGREEN, 
    DARKTEAL, 
    DARKRED,
    DARKPINK,
    DARKYELLOW,
    GRAY, 
    DARKGRAY, 
    BLUE, GREEN, 
    TEAL, 
    RED, 
    PINK, 
    YELLOW, 
    WHITE
};

struct meinNamespace::setColor {
    color _c;
    HANDLE _console_handle;
    setcolor(color c, HANDLE console_handle)
        : _c(c), _console_handle(0)
    { 
        _console_handle = console_handle;
    }
};


void meinNamespace::draw(int x, int y) {
    HWND myconsole = GetConsoleWindow();
    HDC mydc = GetDC(myconsole);

    int pixel =0;

    COLORREF COLOR= RGB(255,255,255); 


    for(double i = 0; i < PI * 4; i += 0.05) {
        SetPixel(mydc,pixel,(int)(50+25*cos(i)),COLOR);
        pixel+=1;
    }
    ReleaseDC(myconsole, mydc);
}

void meinNamespace::drawSquare(int aa, int ab, int ba, int bb) {
    draw(aa,bb);
}

Header:

#ifndef MEINHEADER_H
#define MEINHEADER_H

namespace meinNamespace {
    enum color {
        DARKBLUE=1,DARKGREEN,
        DARKTEAL,DARKRED,
        DARKPINK,DARKYELLOW,
        GRAY, DARKGRAY,
        BLUE,GREEN,
        TEAL,RED,
        PINK,YELLOW,
        WHITE
    };
    struct setcolor;
    void meinNamespace::draw(int x, int y);
    void meinNamespace::draw(int a, int b);
}

#endif

Die Funktionen sollen in ein Konsolenfenster Pixel schreiben, ob sie funktionieren weiß ich noch nicht und sie sind auch noch nicht fertig. Ich weiß nicht wo der Fehler verursacht wird. Ich hoffe jemand kann mir da helfen

LG

Software, IT, programmieren, CPP, development, Informatik, cpp lernen, Cpp Programierung

Javascript - leere Variable prüfen?

Ich habe die letzten Tage angefangen, mich mit Programmierung in HTML und Javascript zu befassen, die ersten Dinge sind auch gelaufen, aber jetzt stehe ich vor einem Problem, wo mir weder youtube noch Google Suche ein Ergebnis liefern konnten, das funktionierte, wahrscheinlich ist es trotzdem einfach aber ich komme nicht drauf:

Ich möchte eine Art Checkliste erstellen, aus einem Eingabefeld soll ein Text ins nächste freie Feld eingefügt werden, dazu muss ich (nach meinem Kenntnissstand, was ich bisher gemacht habe, und was funktionierte, ohne mich dazu zusätzlich belesen zu haben), über if... else Bedingungen nacheinander prüfen ob die vorherigen Felder (text1, text2, text3... jeweils eine eigene Variable) leer sind, um das dann entweder in das Feld einzufügen oder das nächste zu prüfen...
Wenn alle verfügbaren Felder gefüllt sind, soll beim Versuch, die Eingabe zu machen in einem extra Feld eine Meldung kommen "Liste voll", bei meinen bisherigen Versuchen, obwohl kein Feld belegt ist, springt das Programm sofort zu diesem Punkt, stellt also offensichtlich nicht fest, dass die Variablen der vorherigen Felder noch NICHT belegt sind

(Das gleiche soll dann passieren, wenn ein Punkt erledigt ist, jeweils über einen Button soll dieser Punkt entfernt werden und falls nachfolgende Felder belegt sind, diese jeweils nachrücken (also wenn das nachfolgende Feld belegt ist, den Inhalt dieser Variable übernehmen, sonst Variable leeren))

Computer, HTML, programmieren, JavaScript

Meistgelesene Beiträge zum Thema Programmieren