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

H5::

Treue Seele

Beiträge: 368

Wohnort: Kiel

  • Private Nachricht senden

11

07.03.2014, 03:53

Eventuell wäre auch Processing etwas für dich, Grundlage ist Java.

Wikipedia-Processing
:love: := Go;

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

12

07.03.2014, 12:30

Guck jetzt geht der Scheiß hier wieder los :D
Das hatten wir doch schon oft genug, warum verweisen wir nicht einfach darauf?

Ist ja nett Meinungen zu haben, aber manchmal ist es doch besser sie weg zu lassen.

Wenn du jetzt Java lernst ist Processing aber evt. tatsächlich interessant.

13

08.03.2014, 11:43

Hallo!

Danke für die zahlreichen Tipps. Ich habe mich jetzt für JAVA entschieden und mir auch schon mal NetBeans installiert. Mit Hilfe der vorgeschlagenen Bücher und einem Online-Tutorial habe ich nun bereits ein Array programmieren können (Zuweisung der Arraygröße und setzen aller Inhalte auf 0 --> wollte die Arrays als Grundlage für das Spielfeld nutzen).

Mir sind dabei nur einige Dinge noch nicht ganz klar...


1. In einer "MainKlasse" habe ich den folgenden Code umgesetzt (das kann man doch bestimmt irgendwie sinnvoller hier einfügen?):

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
package newpackage;

/**
*
* @author Fivo
*/
public class Main {

// main-Methode
public static void main (String[ ] args)
{
int [ ] [ ] feld = new int [5][5]; //Spielfeldgröße

for (int i=0; i< feld.length; ++i) 
{
for (int j=0; j<feld.length; ++j)
{
feld[j]=0;
System.out.print(feld[j]);
}
System.out.println();
}
}
}

Das funktioniert soweit auch ganz gut... Jetzt möchte ich den gezeigten Code allerdings gerne in einem Unterprogramm unterbringen. Dieses Unterprogramm soll dann aus dem Hauptprogramm aufgerufen werden. Daher ich eine zweite Klasse erstellt und dort folgenden Code eingefügt:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package newpackage;


public class Spielfeld 
{

int [ ] [ ] feld = new int [5][5]; //Spielfeldgröße

for (int i=0; i< feld.length; ++i) 
{
for (int j=0; j<feld.length; ++j)
{
feld[j]=0;
System.out.print(feld[j]);
}
System.out.println();
}
}



Dort bekomme ich jetzt allerdings einen Fehler angezeigt mit dem Inhalt das "j" nicht bekannt sei und "package feld" nicht existiert? Kann mir jemand erklären, was es damit auf sich hat?

2. Ist es generell sinnvoll, dass ganze so anzugehen? Also das Spielfeld über eine Matrix anzulegen. Generell wäre jeder Wert 0 außer dem Feld des Spielers (1). Dann könnte ich ja über Matrizenrechnung diese "1" hin und her bewegen...

Vielen Dank schonmal

Fivo

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »fivo« (08.03.2014, 13:07)


Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

14

08.03.2014, 12:20

genereller Hinweis:
Rechteckige Matrizen kann man immer auch als 1D Array darstellen. Der Index im 1D Array kann dann per y*breite+x berechnet werden :) .
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

15

08.03.2014, 12:54

Erstmal verwende bitte code Tags.

Die Klasse Spielfeld ist syntaktisch so falsch.
Du muss Code immer in Methoden schreiben, du kann nicht einfach in die Klasse schreiben.

Bei dir sollte das dann z.B. so aussehen:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Spielfeld{
    private int[][] felder = new int[5][5];

    public Spielfeld(){ // Konstruktor, kann so (leer) auch weggelassen werden
    
    }
    
    public void ausgeben(){ // Methode ohne Rückgabewert (void)
        // deine for Schleifen
    }
}

class Main{
    public static void main(String[] args){
        Spielfeld spiel = new Spielfeld();
        spiel.ausgeben();
    }
}


Übrigens würde ich davon abraten direkt mit objektorientierter Programmierung zu beginnen, außer du kennst dich schon etwas aus.
Für die Anfänge reicht die main Methode und einige Tests in dieser (Bedingungen, Variablen, Schleifen, ...).

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »DeKugelschieber« (08.03.2014, 16:12)


16

08.03.2014, 13:16

Hey, ich habe die Code Tags oben ergänzt. Wenn ich deinen Code so erstmal 1:1 übernehme, bekomme ich folgende Meldung...

error: '{' expected
class Main(){
1 error
C:\xxx\xxx\nbproject\build-impl.xml:920: The following error occurred while executing this line:
C:\xxx\xxx_0.1\nbproject\build-impl.xml:260: Compile failed; see the compiler error output for details.
BUILD FAILED (total time: 0 seconds)

Ich sehe es also richtig, dass die Main() Klasse nicht zwingend als erstes aufgerufen werden muss? Habe ich dann wohl falsch verstanden...


Danke

Fivo

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

17

08.03.2014, 13:34

Es muss ja auch "class Main{" heißen und nicht "class Main(){".

Als erstes wird "public static void main(String[] args)" aufgerufen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

18

08.03.2014, 16:13

Oh sorry mein Fehler, gepennt.
Was ich außerdem vergessen hatte: beide Klassen müssen in Java jeweils in einer eigenen .java Datei liegen.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

19

08.03.2014, 17:53

Frauenstudiengang?
Na du hast dich ja im Prinzip für Java entschieden. Das geht auch auf jeden Fall:) Ansonsten kann ich dir unseren Wiki-Artikel dazu ans Herz legen. Das hilft vielleicht auch weiter. Java passt aber an sich und wenn dir die Sprache gefällt, dann bleibt ruhig dabei.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

20

08.03.2014, 22:25

Hallo,

vielen Dank für den Tip mit der Wiki, habe darüber die Onlinevorlesung über Java aus Oldenburg gefunden (wirklich sehr gut gemacht, hätten sich meine Profs. mal was abschauen können... :-)).

Ich habe das Programm etwas umgeschrieben und auf euer Anraten nurnoch eine Klasse verwendet (Spielfeld). Jetzt möchte ich gerne per Eingabe die Arraygröße vorgeben. Wenn ich das gezeigte Programm ausführe, übernimmt er allerdings nicht die eingebenen Werte (die Parameter a und b nehmen zwar die gewünschten Zahlenwerte an, aber das Array ändert seine Größe nicht entsprechend sondern bleibt [10][10])... Kann mir jemand einen Tipp dazu geben? Außerdem macht meine Forschleife bei einigen Arraydimensionen nicht mehr mit [5][10] geht zum Beispiel nicht....

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
package newpackage;

class Spielfeld {
    
  
    static int a=10;
    static int b=10;
    
    static int[][] felder = new int[a][b];  // Definition der Feldgröße
    
    static void eingabe(){      //Eingabe der Feldgröße
        int a_test = new java.util.Scanner( System.in ).nextInt();
        int b_test = new java.util.Scanner( System.in ).nextInt(); 
        a = a_test;
        b = b_test;
    }
    
    static void ausgabe(){      //Abbildung der Matrix in Konsole
    for (int i=0; i< felder.length; ++i)    
        {
            for (int j=0; j<felder.length; ++j)
            {
                felder[i][j]=0;
                System.out.print(felder[i][j]);
            }
            System.out.println();
            } 
    System.out.print(a);
    System.out.print(b);
    }
    
    public static void main (String[] args){
    eingabe();
    ausgabe();
    
    }
        
 }


Merci und schönes Wochenende

Fivo

Werbeanzeige