Programmieren – die besten 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

Meistgelesene Beiträge zum Thema Programmieren