Lieber Besucher, herzlich willkommen bei: RPG Studio - Make your World real. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

Yuber

Seher

  • »Yuber« ist der Autor dieses Themas

Motto: Die Welt zu beherrschen.

  • Nachricht senden

1

Samstag, 30. Juli 2011, 18:49

Zeit messen und Array Parameter

Hi!
1) Wie kann ich die Zeit messen um sie im Menü auszugeben?

2) Wie konnte ich jetzt nochmal eine ArrayList nach einen bestimmten Parameter ordnen?
Erstelle NPC

Java Quellcode

1
2
 Schleim = new NPC(sprite.npc[0].getSubImage(0, 0 * 64, 48, 64),"Xerg",10,10,1);
 Vaan = new NPC(sprite.npc[1].getSubImage(0, 0 * 64, 48, 64),"Vaan",5,13,1);

und füge sie hinzu

Java Quellcode

1
2
CharakterListe.add(Schleim);
CharakterListe.add(Vaan);
Nur noch selten hier.

'Til now, I always let people walk all over me!
From now on, if anyone makes fun of me, I'll kill 'em! Just like that!

2

Samstag, 30. Juli 2011, 20:18

1.) Du kannst die Systemzeit nehmen (System.currentTimeMillis()) oder (sicherer) einen eigenen Counter basteln der jeden Update die vergangene Spielzeit draufaddiert (die bekommst du in Slick z.B. mit GameContainer#getDelta)

2.) Collections.sort sortiert den Array nach der Ordnung, die die compareTo Methode der Elemente vorgibt. Du kannst eine eigene compareTo Methode schreiben (die Elemente müssen dann Comparable implementieren). Du kannst Collections.sort aber als zweiten Parameter auch eine Instanz von Comparator mitgeben, die dann eine Methode compare implementieren muss. Die bekommt dann zwei Elemente x, y aus dem Array als Parameter und gibt -1, 0 oder 1 zurück (je nach dem ob gilt x < y, x = y oder x > y).

Findest du aber auch alles in der Java-API erklärt.
Bild
RMXP Grundkurs
1 2 3
Ruby/RGSS-Kurs

Yuber

Seher

  • »Yuber« ist der Autor dieses Themas

Motto: Die Welt zu beherrschen.

  • Nachricht senden

3

Montag, 1. August 2011, 11:07

Zitat

1.) Du kannst die Systemzeit nehmen (System.currentTimeMillis()) oder (sicherer) einen eigenen Counter basteln der jeden Update die vergangene Spielzeit draufaddiert (die bekommst du in Slick z.B. mit GameContainer#getDelta)

In Ordnung. Jetzt muss ich nur wieder rausfinden wie man bei einer Zahl nur eine Ziffer anzeigt.
Bei C konnte man da irgentwas mit % machen. Ich schau da gleich mal bei Google.

Zitat


2.) Collections.sort sortiert den Array nach der Ordnung, die die compareTo Methode der Elemente vorgibt. Du kannst eine eigene compareTo Methode schreiben (die Elemente müssen dann Comparable implementieren). Du kannst Collections.sort aber als zweiten Parameter auch eine Instanz von Comparator mitgeben, die dann eine Methode compare implementieren muss. Die bekommt dann zwei Elemente x, y aus dem Array als Parameter und gibt -1, 0 oder 1 zurück (je nach dem ob gilt x < y, x = y oder x > y).

So aus dem Text bin ich leider nicht schlau geworden.
Habe aber zum Glück noch ne Seite gefunden mit der ich es dann geschafft habe.
Objekte sortieren

EDIT: Hoffentlich seht ihr den Edit...
Ich hab zwar jetzt alles nach Y geordnet. Allerdings gibt es Probleme beim Anzeigen.
Der Spieler flackert zwischen seiner Grafik und Schwarz hinundher. Ich denke weil er ja nicht immer gezeichnet wird sondern nur wenn die Abfrage stimmt.
Aber anders geht es doch nicht oder?
BITTE helft mir!

Java Quellcode

1
2
3
4
5
6
7
8
9
10
//So mach ich es bisher.
 for(int x=0;x<bank.ZFolge.length;x++)
          {
              if(!bank.ZFolge[x].getEvent().equals(bank.Spieler))
                 zeichneNPC(bank.ZFolge[x].getEvent(),g);
             else
                zeichneSpieler(g);
 
          }
//ZFolge füg ich solche Objekte zu: ZFolge(Das Event,PositionX,PositionY)

Hier das flackern:
Flackern was anders machen?
Nur noch selten hier.

'Til now, I always let people walk all over me!
From now on, if anyone makes fun of me, I'll kill 'em! Just like that!

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Yuber« (1. August 2011, 11:07) aus folgendem Grund: Nachtrag


4

Montag, 1. August 2011, 12:43

Du hast das mit der Z-Koordinate nicht verstanden oder? Mit der Z-Koordinate werden trotzdem alle Sprites gezeichnet (meißtens ebenfalls), du kannst nicht einfach sagen: wenn die Z-Koordinate einen bestimmten wert hat dann zeichne ich den Spieler nicht.

Das Ding legt nur die Zeichenreihenfolge fest (bei 2D Spielen) und nicht ob was gezeichnet werden soll oder nicht. Je nach Position deines Spielers solltest du diese so verändern, dass du die richtige Zeichenreihenfolge hast.

-Lone

Yuber

Seher

  • »Yuber« ist der Autor dieses Themas

Motto: Die Welt zu beherrschen.

  • Nachricht senden

5

Montag, 1. August 2011, 12:45

Ja das meine ich ja. Ich habs nur falsch gemacht.
Kannst du mir nicht sagen wie man es richtig macht?
Ich habe jetzt also alle Z Positionen der NPCs und Spieler geordnet.
Und was mach ich damit nun?

Wenn ich es manuell abfrage geht es ja aber will nicht tausend If Abfragen machen müssen.
Nur noch selten hier.

'Til now, I always let people walk all over me!
From now on, if anyone makes fun of me, I'll kill 'em! Just like that!

6

Montag, 1. August 2011, 13:13

Ich weiss nicht wie du es programmiert hast, daher kann ich dir nur einen Ansatz geben wie man es machen könnte.

Wenn du vernünftig programmiert hast haben alle NPCs und der Spieler eine gemeinsame Oberklasse (nennen wir diese einfach mal Sprite). Danach machst du dir eine doppelt verkettete Liste oder nimmst eine fertige aus der Java API (ArrayList z.B.) wo du deine Sprites - nach der Z-Koordinate sortiert - organisierst. Bedenke, dass bei jeder Aktuallisierung der Z-Koordinate du die Liste neu sortieren musst.

Wenn du das hast musst du nur noch die Liste durchlaufen und die Sprites zeichnen lassen. Da sie nach der Z-Koordinate sortiert sind werden diese automatisch in der richtigen Reihenfolge gezeichnet und du musst dich nur noch um das Berechnen der Z-Koordinate kümmern damit die Liste immer die korrekte Reihenfolge hat.

Das ist eine der Möglichkeiten wie man es machen könnte (mMn auch die einfachste für den Einstieg, natürlich kann man hier auch eine eigene Liste schreiben die genau für die Aufgaben die man braucht ausgelegt ist).

-Lone

Yuber

Seher

  • »Yuber« ist der Autor dieses Themas

Motto: Die Welt zu beherrschen.

  • Nachricht senden

7

Donnerstag, 11. August 2011, 10:46

Der Thread kann geschlossen werden.
Ich habe in einem anderen Forum Hilfe gefunden :WinkeWinke:

Edit by Steve Dann verlinke es doch einfach, damit andere, die ein ähnliches Problem haben, auch gleich geholfen werden kann.
(Dann kannst du gerne den Edit hier, wieder auslöschen.)

Edit by Cloud In Ordnung.
Also Leute, falls ihr Hilfe für Java-Spiele-Programmierung braucht kann ich dieses Forum empfehlen:
Java-Gaming.org - home of the largest java game developer community
Das ist auch sehr gut:
Startseite - spieleprogrammierer.de
Nur noch selten hier.

'Til now, I always let people walk all over me!
From now on, if anyone makes fun of me, I'll kill 'em! Just like that!

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Yuber« (11. August 2011, 10:46)


Social Bookmarks