Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

08.07.2012, 16:32

C++ und Java

Hallo Community

Ich bin neu und hoffe das ich ihr um richtigen Topic gelandet bin.Ich mach jetzt seit geraumer Zeit (8Monate) Java und hab dort auch schon 2 simple Programme geschrieben.
Jetzt habe ich aber gemerkt das diese objektorientierte Sprache mir einfach zu komplex wird ,wenn es darum geht Simple 2D Jump n Run Spiele zu programmieren.Alles was ich hinbekomm ist monotone Animation des Spielers,Hintergründe und bewegung.Ich hab mir jetzt jeden abend das verstaubte C++ Buch angeschaut und finde die Räumliche Aufstellung für mich übersichtlicher,außerdem sind Sachen wie while schleifen if etc. ähnlich bzw. genau gleich.
In einem anderen Thread hier auf dem Forum ,habe ich mich dann informiert welche 2D Engines man für den Anfang benutzen müsste.

Meine Frage:
Denkt ihr das Spiele programmieren ist leichter in C++ als in Java ,wenn ja vllt. noch eine Begründung.Mein erstes Ziel ist es einfach ein 2D Spiel aus eigener Kraft zu entwickeln,es muss nichtmal komplex sein sondern ein Jump n Run wäre schon schön.Ich bin aufjedenfall kein Anfänger mehr in Java.Ich habe den Javavideokurs.de gemacht.Ich bin halt jetzt schon in Java so drinne nur mit den 2D Java Spielengines komm ich nicht klar.


EDIT:Fazit dieser Diskussion damit man sich nicht alles durchlesen muss und hinterher nicht immer noch genau so schlau wie davor ist.
An Anfang sollte man sich am besten mit c# oder Java beschäftigen, weil diese Anfänger freundlicher sind.Java ist laut den Leuten leichter als c# allerdings sollte man einfach schauen was einem besser liegt.C# ist nicht unbediengt im Vorteil, wenn es um Spieleentwicklung, da Java mittlerweile auch viele engines und Library hat, welche gut funktionieren.Wenn man sich damit dann befasst hat kann man sich auch sicher c++ vornehmen.Durch die Erfahrung der anderen Sprachen fällt es einem dann auch leichter den einstieg in c++ zufinden.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Pygentrix« (06.08.2012, 23:35) aus folgendem Grund: Fazit damit man sich nicht alles durchlesen muss.


Wirago

Alter Hase

Beiträge: 1 193

Wohnort: Stockerau

Beruf: CRM Application Manager

  • Private Nachricht senden

2

08.07.2012, 16:34

also Java ist definitiv einfacher als C++ ^^

Zitat

ch bin halt jetzt schon in Java so drinne nur mit den 2D Java Spielengines komm ich nicht klar.


welche hast den probiert?

3

08.07.2012, 16:42

Slick.Wenn du willst kann ich dir mein Source Code schicken

4

08.07.2012, 16:46

Main.class

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package spiel.main;

import org.newdawn.slick.AppGameContainer;
import org.newdawn.slick.BasicGame;
import org.newdawn.slick.GameContainer;
import org.newdawn.slick.Graphics;
import org.newdawn.slick.Image;
import org.newdawn.slick.Input;
import org.newdawn.slick.SlickException;
import org.newdawn.slick.SpriteSheet;

public class Main extends BasicGame{

    public Main() {
        super("Game");
    }
    

Image background;
SpriteSheet runright;
Spieler spieler;



    @Override
    public void init(GameContainer gc) throws SlickException {

        background = new Image("data/pipisky.png");
        runright = new SpriteSheet("data/runright.png", 21, 23);
        spieler = new Spieler(50,500,runright);

    }

    @Override
    public void update(GameContainer gc, int delta) throws SlickException {
    
        Input input = gc.getInput();

        
        if(input.isKeyDown(Input.KEY_A) && spieler.x >= 0)
        {
           spieler.moveLeft();
           spieler.movingLeftAnimation();
        }
 
        if(input.isKeyDown(Input.KEY_D) && spieler.x <= 1260)
        {
           spieler.moveRight();
        }
 
 
        if(input.isKeyDown(Input.KEY_SPACE) && spieler.y >= 0)
        {

         spieler.jump();
         
        }
        if(!input.isKeyDown(Input.KEY_A) && !input.isKeyDown(Input.KEY_D))
        {
        spieler.standingAnimation();
        spieler.fall();
        
        }
    }
    @Override
    public void render(GameContainer gc, Graphics g) throws SlickException {
    
        background.draw(0, 0);
        g.drawAnimation(spieler,spieler.x,spieler.y);
    
    }
    
    public static void main(String[] args) throws SlickException {
        AppGameContainer app = new AppGameContainer(new Main());
        app.setDisplayMode(1280, 720, false);
        app.setShowFPS(true);
        app.start();

    }

}

Spieler.class

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package spiel.main;

import org.newdawn.slick.Animation;
import org.newdawn.slick.SpriteSheet;

public class Spieler extends Entity
{
    

    public Spieler(float x,float y,SpriteSheet img)
    {
        this.x = x;
        this.y = y;
        this.img = img;
        setAutoUpdate(true);
        for(int frame = 0;frame<9;frame++)
        {
            addFrame(img.getSprite(frame,0), 150);
        }
        setSpeed(3);

        }
    
    
    
public float moveLeft()
{ 
    x -= 0.1;
    return x;
}
public float moveRight()
{
    x += 0.1;
    return y;
}
public float fall() {
   if(y <= 700)
    y += 0.1;
    return y;
    
}
public float jump() {
    y -= 0.1;
    return y;
    
}


public void movingLeftAnimation()
{
 System.out.println(img.getVerticalCount());
}


public void standingAnimation() 
{
 setCurrentFrame(0);
}



}

Entity.class

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
package spiel.main;


import org.newdawn.slick.Animation;
import org.newdawn.slick.SpriteSheet;


public abstract class Entity extends Animation{
    
    int life;
    int lifereg;
    float startx;
    float starty;
    float x;
    float y;
    SpriteSheet img;
    

    public float getX()
    {
        return x;
    }
    public float getY()
    {
        return y;
    }
}


Hoffe es sieht nicht zu nabi aus.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

5

08.07.2012, 16:49

Und nun?
Du hast einfach den Quellcode hingeklatscht, den sicherlich keiner ausführen wird.
Was ist denn das Problem?

6

08.07.2012, 16:58

Naja ich weiß z.b nicht wie ich verschiedene animationen für Spieler definiere

FSA

Community-Fossil

  • Private Nachricht senden

7

08.07.2012, 17:29

Da es 2D ist: Mit Sprites. Aber so wie das aussieht bist du von Animationen noch entfernt.
@David: Das Bild ist besser! :D

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

Wirago

Alter Hase

Beiträge: 1 193

Wohnort: Stockerau

Beruf: CRM Application Manager

  • Private Nachricht senden

8

08.07.2012, 17:55

Nunja, wenn du dir überlegst was eigentlich eine Animation ist (ein Ablauf mehrerer Bilder) dann wirst du vielleicht auch dahinterkommen wie man diese realisiert. Und die LWJGl (http://www.lwjgl.com/) ist ansich für Games unter Java eine der besten Anlaufstellen.

9

08.07.2012, 18:04

Danke für eure schnellen Antworten ,aber animierte sprites sind doch animationen.Ich werde mich gleich mal bei lwjgl durchlesen.eine frage bleibt doch noch.wie findet ihr ist es gecodet ,habe noch nie Feedback bekommen und interessiere mich dafür ,ob es eher schwammig Anfänger style gecodet ist oder doch schon durchdacht aussieht.

10

08.07.2012, 18:06

Nur weil was auf anhieb nicht gleich klappt wechselt man doch nicht die Sprache. 0o.
An deiner Stelle wuerd' ich bei Java bleiben. Ist um Welten *g* einfacher, 'grade fuer anfaenger.
Dass dir das schon zu komplex wird mit deinen 3 Dateien `a avg. 60 Zeilen Code ohne aufwaendigere Systeme ist wohl auch ein Witz.
Wie gesagt, wuerde die Java skills ausbauen. :)

Zitat

wie findet ihr ist es gecodet

Es ist wenig Zusammenhang/Material da, um das sicher beantworten zu koennen; Nichtsdestotrotz: Du bekommst 3 von 10 Sternchen, wobei 0 Sternchen bedeutet, dass keine oder so gut wie keine Programmierkenntnisse vorhanden sind und 10 von "outstanding proficiency" zeigt.
Das system ist offensichtlich exponential.

Werbeanzeige