Erste Schritte MiniProgramm

julian.veh

Bekanntes Mitglied
Java:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Newfour extends JPanel implements Runnable, KeyListener{
    
    private JFrame frame;
    private Thread thread;
    private int xEins = 20, yEins = 20, xZwei = 50, yZwei = 50;
    private boolean einsUp = false, einsDown = false, einsLeft = false, einsRight = false;
    private boolean zweiUp = false, zweiDown = false, zweiLeft = false, zweiRight = false;
    
    public Newfour() {        
        this.setPreferredSize(new Dimension(400, 300));
        
        this.frame = new JFrame("Fenster");
        this.frame.setLocationRelativeTo(null);
        this.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.frame.setResizable(false);
        
        this.frame.addKeyListener(this);
        this.frame.add(this);
        this.frame.pack();
        this.frame.setVisible(true);
        
        run();
    }
    
    public void start() {
        this.thread = new Thread(this);
        thread.start();
    }
    
    public void stop() {
        thread.stop();
    }
    
    @Override
    public void run() {
        while(frame.isVisible()) {
            doLogic();
            repaint();
            try {
                thread.sleep(30);
            } catch (InterruptedException e) {
            }
        }
    }
    
    @Override
    public void keyReleased(KeyEvent e) {
        if(e.getKeyCode() == 37) {
            einsUp = false;
            einsDown = false;
            einsLeft = false;
            einsRight = false;
        } else if(e.getKeyCode() == 38) {
           einsUp = false;
            einsDown = false;
            einsLeft = false;
            einsRight = false;
        } else if(e.getKeyCode() == 39) {
           einsUp = false;
            einsDown = false;
            einsLeft = false;
            einsRight = false;
        } else if(e.getKeyCode() == 40) {
            einsUp = false;
            einsDown = false;
            einsLeft = false;
            einsRight = false;
        } else if(e.getKeyCode() == 65) {
            zweiUp = false;
            zweiDown = false;
            zweiLeft = false;
            zweiRight = false;
        } else if(e.getKeyCode() == 87) {
            zweiUp = false;
            zweiDown = false;
            zweiLeft = false;
            zweiRight = false;
        } else if(e.getKeyCode() == 68) {
            zweiUp = false;
            zweiDown = false;
            zweiLeft = false;
            zweiRight = false;
        } else if(e.getKeyCode() == 83) {
            zweiUp = false;
            zweiDown = false;
            zweiLeft = false;
            zweiRight = false;
        }
    }
    
    @Override
    public void keyPressed(KeyEvent e) {
        if(e.getKeyCode() == 37) {
            einsUp = false;
            einsDown = false;
            einsLeft = true;
            einsRight = false;
        } else if(e.getKeyCode() == 38) {
            einsUp = true;
            einsDown = false;
            einsLeft = false;
            einsRight = false;
        } else if(e.getKeyCode() == 39) {
            einsUp = false;
            einsDown = false;
            einsLeft = false;
            einsRight = true;
        } else if(e.getKeyCode() == 40) {
            einsUp = false;
            einsDown = true;
            einsLeft = false;
            einsRight = false;
        } else if(e.getKeyCode() == 65) {
            zweiUp = false;
            zweiDown = false;
            zweiLeft = true;
            zweiRight = false;
        } else if(e.getKeyCode() == 87) {
            zweiUp = true;
            zweiDown = false;
            zweiLeft = false;
            zweiRight = false;
        } else if(e.getKeyCode() == 68) {
            zweiUp = false;
            zweiDown = false;
            zweiLeft = false;
            zweiRight = true;
        } else if(e.getKeyCode() == 83) {
            zweiUp = false;
            zweiDown = true;
            zweiLeft = false;
            zweiRight = false;
        }
    }
    
    @Override
    public void keyTyped(KeyEvent e) {
        
    }
    
    @Override 
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.setColor(Color.black);
        g.fillOval(xEins, yEins, 20, 20);
        g.setColor(Color.red);
        g.fillOval(xZwei, yZwei, 20, 20);
    }
    
    public void doLogic() {
        if(einsUp) yEins-=3;
        if(einsDown) yEins+=3;
        if(einsLeft) xEins-=3;
        if(einsRight) xEins+=3;
        if(zweiUp) yZwei-=3;
        if(zweiDown) yZwei+=3;
        if(zweiLeft) xZwei-=3;
        if(zweiRight) xZwei+=3;
        
    }
    
    public static void main (String[] args) {
        new Newfour();
    }
    
}

Das dein Code imho ein ziemliches Durcheinander ist habe ich das ganze nochmal erneuert.
Wenn du alles verstehst, solltest du mal probieren es selbst nachzuprogrammieren und nicht einfach einzufügen.
Abgesehen davon empfehle ich dir vllt erstmal mit etwas wie einem Sudokuspiel anzufangen und dir anschließend ein Tutorial wie ich es hier schon gepostet habe vorzunehmen.

Grüße Julian
 

mock789

Aktives Mitglied
Oh mann:shock:

Dein Code ist leider noch ein bisschen harter Tobak für mich und macht mir bewusst was für ein heftiger Anfänger ich bin ;(


Ich hab ihn ausprobiert... er funktioniert auch aber ich glaube bis ich den nachvollziehen kann vergeht noch a bissel Zeit...
 

mock789

Aktives Mitglied
wieso wo liegt denn dein Problem? Wenn ich dein Programm einfüge kann ich durchaus beide Kugeln gleichzeitig bewegen.

Definierst du da Methoden im Konstruktor???????



Hmm... echt... weil bei mir lassen sie sich nur nacheinander bewegen.


Hier noch mal mein Code... wenn der bei dir funktioniert dann sollte ich meinem Compiler besser zureden:)



Java:
package newfour;

import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

public class Newfour extends Frame {//von Frame erben lassen

   int xPosEins = 100, yPosEins = 100, xPosZwei = 200, yPosZwei = 200; 
  

    private boolean ovalEinsRight = false;
    private boolean ovalEinsLeft = false;
    private boolean ovalEinsUp = false;
    private boolean ovalEinsDown = false;
    private boolean ovalZweiRight = false;
    private boolean ovalZweiLeft = false;
    private boolean ovalZweiUp = false;
    private boolean ovalZweiDown = false;

    public Newfour() {

        super("Unser erstes Fenster...");
        setSize(500, 500); // größe des Fensters festlegen
        setBackground(Color.BLACK); //hintergundfarbe festlegen


        addKeyListener(new KeyAdapter() { //hier werden die Tastatureingaben erkannt

            @Override
            public void keyPressed(KeyEvent e) {
                //die Änderungen wenn man eine Pfeiltaste drückt
                switch (e.getKeyCode()) {
                    //case KeyEvent.VK_ESCAPE: dispose(); break;
                    case KeyEvent.VK_ESCAPE:
                        System.exit(0);
                    case KeyEvent.VK_LEFT:
                        ovalEinsLeft = true;
                        ovalEinsRight = false;
                        ovalEinsUp = false;
                        ovalEinsDown = false;
                        ovalZweiLeft = false;
                        ovalZweiRight = false;
                        ovalZweiUp = false;
                        ovalZweiDown = false;
                        break;
                    case KeyEvent.VK_RIGHT:
                        ovalEinsRight = true;
                        ovalEinsLeft = false;
                        ovalEinsUp = false;
                        ovalEinsDown = false;
                        ovalZweiLeft = false;
                        ovalZweiRight = false;
                        ovalZweiUp = false;
                        ovalZweiDown = false;
                        break;
                    case KeyEvent.VK_UP:
                        ovalEinsUp = true;
                        ovalEinsRight = false;
                        ovalEinsLeft = false;
                        ovalEinsDown = false;
                        ovalZweiLeft = false;
                        ovalZweiRight = false;
                        ovalZweiUp = false;
                        ovalZweiDown = false;
                        break;
                    case KeyEvent.VK_DOWN:
                        ovalEinsDown = true;
                        ovalEinsRight = false;
                        ovalEinsUp = false;
                        ovalEinsLeft = false;
                        ovalZweiLeft = false;
                        ovalZweiRight = false;
                        ovalZweiUp = false;
                        ovalZweiDown = false;
                        break;

                    case KeyEvent.VK_A:
                        ovalZweiLeft = true;
                        ovalZweiRight = false;
                        ovalZweiUp = false;
                        ovalZweiDown = false;
                        ovalEinsUp = false;
                        ovalEinsRight = false;
                        ovalEinsLeft = false;
                        ovalEinsDown = false;
                        break;
                    case KeyEvent.VK_D:
                        ovalZweiRight = true;
                        ovalZweiLeft = false;
                        ovalZweiUp = false;
                        ovalZweiDown = false;
                        ovalEinsUp = false;
                        ovalEinsRight = false;
                        ovalEinsLeft = false;
                        ovalEinsDown = false;
                        break;
                        
                    case KeyEvent.VK_W:
                        ovalZweiUp = true;
                        ovalZweiRight = false;
                        ovalZweiLeft = false;
                        ovalZweiDown = false;
                        ovalEinsUp = false;
                        ovalEinsRight = false;
                        ovalEinsLeft = false;
                        ovalEinsDown = false;
                        break;
                    case KeyEvent.VK_S:
                        ovalZweiDown = true;
                        ovalZweiRight = false;
                        ovalZweiUp = false;
                        ovalZweiLeft = false;
                        ovalEinsUp = false;
                        ovalEinsRight = false;
                        ovalEinsLeft = false;
                        ovalEinsDown = false;
                        break;
                        


                }
                move();
                repaint();//Bildschirm neu zeichnen
            }

            
            public void move() {
                if (ovalEinsRight) {
                    xPosEins+=10;
                }
                if (ovalEinsLeft) {
                    xPosEins-=10;
                }
                if (ovalEinsUp) {
                    yPosEins-=10;
                }
                if (ovalEinsDown) {
                    yPosEins+=10;
                }
                if (ovalZweiRight) {
                    xPosZwei+=10;
                }
                if (ovalZweiLeft) {
                    xPosZwei-=10;
                }
                if (ovalZweiUp) {
                    yPosZwei-=10;
                }
                if (ovalZweiDown) {
                    yPosZwei+=10;
                }
            }
        });
        
        

    }

    @Override
    public void paint(Graphics g) {//Fenster zeichnen
        {
            g.setColor(Color.WHITE);//farbe für das Objekt setzen
            g.fillOval(xPosEins, yPosEins, 30, 30);//weiss gefülltes Rechteck malen
        }
        {
            g.setColor(Color.GREEN);//farbe für das Objekt setzen
            g.fillOval(xPosZwei, yPosZwei, 30, 30);//Kreis malen an position x,y und größe festlegen
        }




    }

    public static void main(String[] args) {
        new Newfour().setVisible(true);//Fenster erzeugen


    }
}
 
Zuletzt bearbeitet:

mock789

Aktives Mitglied
Okay,

hab jetzt schon kleine Probleme im Tutorial

http://www.java-forum.org/spiele-multimedia-programmierung/54795-quaxli-2d-spiele-tutorial.html


Auf Seite 5 mit Zeile 7 (JFrame frame;)

Hier ist mein Code, eigentlich meine ich, dass es eins zu eins ist:



Java:
package gamepaneltwo;



import javax.swing.JPanel;


public class GamePaneltwo extends JPanel{
    
    private static final long serialVersionUID = 1L;
    JFrame frame;
    
    
    public GamePaneltwo (int w, int h){
        
        
    }
}
 

KingOfExceptions

Bekanntes Mitglied
Ich habe danach angefangen, ein eigenes Spiel zu machen. Dafür habe ich dann einfach den Anfang von Quaxlis Tutorial genommen und daraus mein eingenes Spiel konzipiert. In meinem Spiel sollte man mit den Pfeiltasten zwei Quadrate übereinander schieben. Dann gibt es natürlich auch Hindernisse etc...
So hab ich dann weiter gemacht.
 

mock789

Aktives Mitglied
Ich brauch dringend Hilfe wie ich die GIF Datei auf Seite 19 im Tutorial speichern kann :bahnhof:

http://www.java-forum.org/spiele-multimedia-programmierung/54795-quaxli-2d-spiele-tutorial.html


Da ist ein GIF Bild von einem kleinen Hubschrauber das, soweit ich es richtig verstanden hab in Ordner in meinem Projekt gespeichert werden soll.

Jetzt dumme Frage: Wie speicher ich dieses Bild in meinem Projekt damit ich später drauf zugreifen kann ???:L

Also einfach Linksklick und speichern funktioniert jedenfalls schon mal nicht


Weiss irgendjemand wie ich das machen muss???
 
Zuletzt bearbeitet:

mock789

Aktives Mitglied
Sorry, ich ckecks irgendwie nicht ganz... Kannst du mir ne Dummy Anleitung geben wie man das macht:oops:

Habs kopiert und in ein Open Office, dachte ich skaliers da aber das funktioniert iwie nicht. Als PDF auch nicht. Kannst du mir sagen wie du nur das Helikopter GIF ausgeschnitten hast???

Und in welchem Format hast du es abgepeichert, Open Office, PDF???:L Wie du siehst ich habe keinen blassen Schimmer :eek:
 

KingOfExceptions

Bekanntes Mitglied
hier hast du alle bilder .. es ist ein gif format

Du findest sie im code/bin/pics ordner des Tutorials
 

Anhänge

  • heli.gif
    heli.gif
    1,3 KB · Aufrufe: 38
  • background.jpg
    background.jpg
    13,3 KB · Aufrufe: 13
  • cloud.gif
    cloud.gif
    1 KB · Aufrufe: 39
  • explosion.gif
    explosion.gif
    2,2 KB · Aufrufe: 9
  • rocket.gif
    rocket.gif
    1,2 KB · Aufrufe: 13
Zuletzt bearbeitet:

mock789

Aktives Mitglied
Bor... ich glaub ich muss erstmal mit dem Tutorial pausieren... kriegs nicht zum laufen und hab das Gefühl, dass es viel zu viel neues auf einmal für mich ist. Um die Motivation am laufen zu halten sollte ich lieber kleine Schritte mache.

Im Tutorial ist es so, dass ich irgendwann einfach nur abschreibe und das alles gar nicht mehr nachvollziehen kann.
 

mock789

Aktives Mitglied
So hab mir jetzt erstmal nur einen kleinen Brocken vom Tutorial gepackt...:rtfm:

Und hier auch schon mal ein Problem: Hab versucht die Hintergrundfarbe auf Gelb zu ändern aber das geht nicht wie ich es mir vorgestellt habe.:bahnhof:

Weiss jemand wie es besser geht???



Hier ist mein Code:

Java:
package newnine;

import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class Newnine extends JPanel {

    private static final long serialVersionUID = 1L;
    JFrame frame;

    public static void main(String[] args) {
        new Newnine(800, 600);
    }

    public Newnine(int w, int h) {
        this.setPreferredSize(new Dimension(w, h));
        frame = new JFrame("Bildschirm");
        frame.setLocation(100, 100);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(this);
        frame.pack();
        frame.setVisible(true);
        frame.setBackground(Color.yellow);
        



    }
}
 

XHelp

Top Contributor
Du hast ein Panel, welches im Konstruktor ein Frame erstellt? oO
Und was genau passt dir denn nicht? Wenn du die Farbe von dem Panel ändern willst, dann musst du auch die Farbe von dem Panel ändern und nicht von dem Frame.
 

julian.veh

Bekanntes Mitglied
nach 4 seiten und 3 verschiedenen themen würde ich mal ein neues thema empfehlen ^^

@XHelp: Warum auch immer, wird es aber auch so im Quaxlis Tutorial erklärt. ;)
 

Neue Themen


Oben