Fragen zu HashMaps

C

Cury

Aktives Mitglied
Hallo alle,
Ich bin dabei ein Plugin zuschreiben, welches einem Spieler ermöglicht, seine Spitzhacken durch das abbauen von Blöcken zu leveln. Für jeden abgebauten Block soll die Spitzhacke 1 XP bekommen. Diese Xp werden in der Lore des Items gesetzt.
Problem:
Ich habe es bis jetzt mit einer einzigen Variable gemacht. Dies funktioniert natürlich nicht, da dann auf allen Spitzhacken der Gleiche wert ist. Ich habe versucht das folgendermaßen zu lösen:

ItemStack i = p.getItemInHand();
HashMap<ItemStack, Integer> level = new HashMap<>();
int xp= level.get(i);
xp++;
level.put(i, xpd);


Bei dieser Variante bekomme ich eine NullPointerExeption. Diese entsteht bei der Inizialisierung von int xp.

Ich versuche in der HashMap die Xp Anzahl, die für die abgebauten Blöcke stehen, in dem ItemStack, also der Spitzhacke zu speichern, dann zu getten, beim abbauen 1 hochzusetzten, und dann wieder in der HashMap zu Speichern.

Ich fände es toll wenn mir jemand helfen könnte.
Das ist das einzige was noch nicht geht. Alles andere klappt fehlerlos.

LG Julius
 
C

Cury

Aktives Mitglied
jetzt ist zwar der Fehler weg, aber jetzt Zählt der die Xp nicht mehr hoch, sondern bleibt immer bei 1
 
J

JustNobody

Top Contributor
Falls die paar Zeilen Code so zusammen in einer Methode stehen, dann ist das selbstverständlich, denn du erzeugst ja ständig eine neue HashMap die dann nur in einer lokalen Variable gespeichert ist.
 
C

Cury

Aktives Mitglied
Jetzt wird es hochgezählt, allerdings sehr unregelmäßig, aslo alle 10 Blöcke doer so und nach 10 gefarmten blöcken wird die Hashmap wieder gecleart
 
J

JustNobody

Top Contributor
Kannst Du uns mehr von dem Code zeigen? Ohne Details wird Dir hier kaum jemand helfen können fürchte ich.
 
X

Xyz1

Gast
Das ist wie Raten...
Bitte mehr Code, Erklärungen usw usf ...
Und achte etwas auf Deine Rechtschreibung...
Und - wie man Fragen stellen sollte im Allgemeinen.
Danke.
 
J

JustNobody

Top Contributor
Wie ist der HashCode von ItemStack implementiert? Ist sicher gestellt, dass der HashCode der ItemStack Instanzen sich nicht verändert mit der Zeit? Das wäre jetzt eine Möglichkeit, die mir einfällt. Der Code selbst ist recht unübersichtlich- jetzt auf dem Handy ist da ein Überblick schwer. Aber der Code verschreckt etwas ... wie lang ist da eine Methode? Und die vielen if else if .... aber ich schaue mal, dass ich da morgen evtl. noch das eine oder andere dazu schreibe ....
 
C

Cury

Aktives Mitglied
Danke an alle die mir hier Lösungsvorschläge geschickt haben. Ich habe jetzt eine mögliche Lösung gefunden.
Der Fehler war, dass die Items zu 100% gleich sind und deshalb nimmt er immer den gleichn wert. Hat jemand eine Idee in welcher Form Items unterschiedlich sind, oder wie man sie unterschiedlich machen kann.
Mit dem Displayname würde es halt gehen, aber dann könnte man die Items umbenennen.

Gibt es bei Items sowas wie UUID, wie bei Spielern?
 
J

JustNobody

Top Contributor
Wenn Du Klassen schreibst, dann kannst Du da auch eine UUID einfügen. Es liegt doch an Dir als Entwickler, vorzugeben, was welche Klasse beinhalten soll.

Somit kannst Du in eine Klasse einbauen:
Java:
private UUID id = UUID.randomUUID();
public UUID getId() { return id; }

Edit: Wobei die Frage ist, ob so etwas überhaupt notwendig ist. Du hast doch unterschiedliche Instanzen und die wirst Du doch auseinander halten können. (Und da liegt es an Dir, vernünftige equals und hashcode Methoden zu definieren!)
 
J

JustNobody

Top Contributor
Und da Du den Code wieder raus gelöscht hast aus dem Link wird es dazu auch kein Feedback mehr geben können.
 
C

Cury

Aktives Mitglied
Ok danke. Den Code kann ich nochmal schicken.

Also kann ich items eine Rnadom UUID geben und dann die UUID in die HashMap packen?
Mein Ziel ist halt, dass alle Items einzigartig sind und dann diese Einzigartigkeit in die HashMap zu packen.
 
J

JustNobody

Top Contributor
Das ist EINE Möglichkeit. Die Frage ist aber doch: Brauchst Du diese Art der Identifikation wirklich? Nach meinem Verständnis hast Du aber unterschiedliche Instanzen und die sind doch schon per se unterschiedlich. Daher macht es aus meiner Sicht derzeit wenig Sinn, da so eine UUID einzufügen.

Die Punkte, die also zu klären wären:
a) Wieso werden zwei Instanzen als gleich angesehen? Was hast Du da für Code drinnen? Die equals Methode von Object sollte zwei Instanzen sauber auseinander halten auch wenn die Instanzvariablen gleich sind. Also wirst Du da eine equals Methode geschrieben haben (oder schreiben lassen, falls Du z.B. Lombok einsetzt).
b) Die Problematik wird dann evtl. auch kritisch, wenn Du etwas nutzt, dass mit Hashcodes arbeitet. Es ist absolut kritisch, wenn Du einen Key nutzt, der sich verändert und dabei der hashcode auch verändert wird. Dann wird ein key plötzlich nicht mehr gefunden und so.

==> Statt irgendwelcher "schneller Fixes" wäre mein Ratschlag, sich die Details genau anzusehen und zu begreifen, was wieso passiert. So eine schnelle Behebung führt zu mehreren Dingen:
- zu komplizierter Code, da Dinge enthalten sind, die unnötig sind.
- fehlerhafter Code - Du wirst Dinge haben, die nicht das machen, was Du erwartest. Das führt schnell zu Folgefehlern die dann immer schwerer zu finden und zu diagnostizieren sind.
- Nicht wartbarer Code, da Code schlicht nicht im Detail verstanden wurde.
 
C

Cury

Aktives Mitglied
Hier nochmal der Code:

Java:
HashMap<String, Integer> dia = new HashMap<>();
	
	@EventHandler
	public void onBreak(BlockBreakEvent e) {
		Player p = e.getPlayer();
		if(p.getLocation().getWorld().getName().equals("world")) {
		
		if(p.getItemInHand().getType() == Material.DIAMOND_PICKAXE) {
			final ItemStack i = p.getItemInHand();
			ItemMeta im = i.getItemMeta();
			if(i.getItemMeta().getLore().contains("§6§lUpgrade I")) {
				
				if(i.getItemMeta().getLore().contains("§6Level: §715")) {
					return;
				}
				
				if(i.getItemMeta().getLore().contains("§6Level: §71") || i.getItemMeta().getLore().contains("§6Level: §72") || i.getItemMeta().getLore().contains("§6Level: §73") || i.getItemMeta().getLore().contains("§6Level: §74") ||i.getItemMeta().getLore().contains("§6Level: §75") || i.getItemMeta().getLore().contains("§6Level: §76") || i.getItemMeta().getLore().contains("§6Level: §77") || i.getItemMeta().getLore().contains("§6Level: §78") || i.getItemMeta().getLore().contains("§6Level: §79") || i.getItemMeta().getLore().contains("§6Level: §710") || i.getItemMeta().getLore().contains("§6Level: §711") || i.getItemMeta().getLore().contains("§6Level: §712") || i.getItemMeta().getLore().contains("§6Level: §713") || i.getItemMeta().getLore().contains("§6Level: §714") || i.getItemMeta().getLore().contains("§6Level: §715")) {
					
					int xpd = dia.getOrDefault(i.getItemMeta().getDisplayName(), 0);
					xpd++;
					dia.put(i.getItemMeta().getDisplayName(), xpd);
					
					
					if(xpd < 200 && xpd > 0) {
						im.setLore(Arrays.asList(" ", "§6" + xpd + "§7/§6200 XP", "§6Level: §71", " ", "§6§lUpgrade I"));
						i.setItemMeta(im);
						p.updateInventory();
					}else if(xpd == 200) {
						im.setLore(Arrays.asList(" ", "§6" + xpd + "§7/§6600 XP", "§6Level: §72", " ", "§6§lUpgrade I"));
						p.sendMessage(Main.pre + "§aDeine Spitzhacke ist nun §6Level 2");
						p.playSound(p.getLocation(), Sound.LEVEL_UP, 1L, 1L);
						im.addEnchant(Enchantment.DIG_SPEED, 1, false);
						i.setItemMeta(im);
						p.updateInventory();
					}else if(xpd < 600 && xpd > 200) {
						im.setLore(Arrays.asList(" ", "§6" + xpd + "§7/§6600 XP", "§6Level: §72", " ", "§6§lUpgrade I"));
						i.setItemMeta(im);
						p.updateInventory();
					}else if(xpd == 600) {
						im.setLore(Arrays.asList(" ", "§6" + xpd + "§7/§61500 XP", "§6Level: §73", " ", "§6§lUpgrade I"));
						p.sendMessage(Main.pre + "§aDeine Spitzhacke ist nun §6Level 3");
						p.playSound(p.getLocation(), Sound.LEVEL_UP, 1L, 1L);
						im.addEnchant(Enchantment.DIG_SPEED, 2, false);
						i.setItemMeta(im);
						p.updateInventory();
					}else if(xpd < 1500 && xpd > 600) {
						im.setLore(Arrays.asList(" ", "§6" + xpd + "§7/§61500 XP", "§6Level: §73", " ", "§6§lUpgrade I"));
						i.setItemMeta(im);
						p.updateInventory();
					}else if(xpd == 1500) {
						im.setLore(Arrays.asList(" ", "§6" + xpd + "§7/§65000 XP", "§6Level: §74", " ", "§6§lUpgrade I"));
						p.sendMessage(Main.pre + "§aDeine Spitzhacke ist nun §6Level 4");
						p.playSound(p.getLocation(), Sound.LEVEL_UP, 1L, 1L);
						im.addEnchant(Enchantment.DURABILITY, 1, false);
						im.addEnchant(Enchantment.DIG_SPEED, 2, false);
						i.setItemMeta(im);
						p.updateInventory();
					}else if(xpd < 5000 && xpd > 1500) {
						im.setLore(Arrays.asList(" ", "§6" + xpd + "§7/§65000 XP", "§6Level: §74", " ", "§6§lUpgrade I"));
						i.setItemMeta(im);
						p.updateInventory();
					}else if(xpd == 5000) {
						im.setLore(Arrays.asList(" ", "§6" + xpd + "§7/§615000 XP", "§6Level: §75", " ", "§6§lUpgrade I"));
						p.sendMessage(Main.pre + "§aDeine Spitzhacke ist nun §6Level 5");
						p.playSound(p.getLocation(), Sound.LEVEL_UP, 1L, 1L);
						im.addEnchant(Enchantment.DURABILITY, 2, false);
						im.addEnchant(Enchantment.DIG_SPEED, 2, false);
						i.setItemMeta(im);
						p.updateInventory();
					}else if(xpd < 15000 && xpd > 5000) {
						im.setLore(Arrays.asList(" ", "§6" + xpd + "§7/§615000 XP", "§6Level: §75", " ", "§6§lUpgrade I"));
						i.setItemMeta(im);
						p.updateInventory();
					}else if(xpd == 5000) {
						im.setLore(Arrays.asList(" ", "§6" + xpd + "§7/§615000 XP", "§6Level: §75", " ", "§6§lUpgrade I"));
						p.sendMessage(Main.pre + "§aDeine Spitzhacke ist nun §6Level 5");
						p.playSound(p.getLocation(), Sound.LEVEL_UP, 1L, 1L);
						im.addEnchant(Enchantment.DURABILITY, 3, false);
						im.addEnchant(Enchantment.DIG_SPEED, 3, false);
						i.setItemMeta(im);
						p.updateInventory();
					}else if(xpd < 15000 && xpd > 5000) {
						im.setLore(Arrays.asList(" ", "§6" + xpd + "§7/§615000 XP", "§6Level: §75", " ", "§6§lUpgrade I"));
						i.setItemMeta(im);
						p.updateInventory();
					}else if(xpd == 15000) {
						im.setLore(Arrays.asList(" ", "§6" + xpd + "§7/§630000 XP", "§6Level: §76", " ", "§6§lUpgrade I"));
						p.sendMessage(Main.pre + "§aDeine Spitzhacke ist nun §6Level 6");
						p.playSound(p.getLocation(), Sound.LEVEL_UP, 1L, 1L);
						im.addEnchant(Enchantment.DURABILITY, 4, true);
						im.addEnchant(Enchantment.DIG_SPEED, 4, false);
						i.setItemMeta(im);
						p.updateInventory();
					}else if(xpd < 30000 && xpd > 15000) {
						im.setLore(Arrays.asList(" ", "§6" + xpd + "§7/§630000 XP", "§6Level: §76", " ", "§6§lUpgrade I"));
						i.setItemMeta(im);
						p.updateInventory();
					}else if(xpd == 30000) {
						im.setLore(Arrays.asList(" ", "§6" + xpd + "§7/§670000 XP", "§6Level: §77", " ", "§6§lUpgrade I"));
						p.sendMessage(Main.pre + "§aDeine Spitzhacke ist nun §6Level 7");
						p.playSound(p.getLocation(), Sound.LEVEL_UP, 1L, 1L);
						im.addEnchant(Enchantment.DURABILITY, 5, true);
						im.addEnchant(Enchantment.DIG_SPEED, 5, false);
						i.setItemMeta(im);
						p.updateInventory();
					}else if(xpd < 70000 && xpd > 30000) {
						im.setLore(Arrays.asList(" ", "§6" + xpd + "§7/§670000 XP", "§6Level: §77", " ", "§6§lUpgrade I"));
						i.setItemMeta(im);
						p.updateInventory();
					}else if(xpd == 70000) {
						im.setLore(Arrays.asList(" ", "§6" + xpd + "§7/§6150000 XP", "§6Level: §78", " ", "§6§lUpgrade I"));
						p.sendMessage(Main.pre + "§aDeine Spitzhacke ist nun §6Level 8");
						p.playSound(p.getLocation(), Sound.LEVEL_UP, 1L, 1L);
						im.addEnchant(Enchantment.DURABILITY, 5, true);
						im.addEnchant(Enchantment.DIG_SPEED, 6, true);
						i.setItemMeta(im);
						p.updateInventory();
					}else if(xpd < 150000 && xpd > 70000) {
						im.setLore(Arrays.asList(" ", "§6" + xpd + "§7/§6150000 XP", "§6Level: §78", " ", "§6§lUpgrade I"));
						i.setItemMeta(im);
						p.updateInventory();
					}else if(xpd == 150000) {
						im.setLore(Arrays.asList(" ", "§6" + xpd + "§7/§6300000 XP", "§6Level: §79", " ", "§6§lUpgrade I"));
						p.sendMessage(Main.pre + "§aDeine Spitzhacke ist nun §6Level 9");
						p.playSound(p.getLocation(), Sound.LEVEL_UP, 1L, 1L);
						im.addEnchant(Enchantment.DURABILITY, 5, true);
						im.addEnchant(Enchantment.DIG_SPEED, 7, true);
						i.setItemMeta(im);
						p.updateInventory();
					}else if(xpd < 300000 && xpd > 150000) {
						im.setLore(Arrays.asList(" ", "§6" + xpd + "§7/§6300000 XP", "§6Level: §79", " ", "§6§lUpgrade I"));
						i.setItemMeta(im);
						p.updateInventory();
					}else if(xpd == 300000) {
						im.setLore(Arrays.asList(" ", "§6" + xpd + "§7/§6700000 XP", "§6Level: §710", " ", "§6§lUpgrade I"));
						p.sendMessage(Main.pre + "§aDeine Spitzhacke ist nun §6Level 10");
						p.playSound(p.getLocation(), Sound.LEVEL_UP, 1L, 1L);
						im.addEnchant(Enchantment.DURABILITY, 5, true);
						im.addEnchant(Enchantment.DIG_SPEED, 7, true);
						im.addEnchant(Enchantment.LOOT_BONUS_BLOCKS, 1, false);
						i.setItemMeta(im);
						p.updateInventory();
					}else if(xpd < 700000 && xpd > 300000) {
						im.setLore(Arrays.asList(" ", "§6" + xpd + "§7/§6700000 XP", "§6Level: §710", " ", "§6§lUpgrade I"));
						i.setItemMeta(im);
						p.updateInventory();
					}else if(xpd == 700000) {
						im.setLore(Arrays.asList(" ", "§6" + xpd + "§7/§61200000 XP", "§6Level: §711", " ", "§6§lUpgrade I"));
						p.sendMessage(Main.pre + "§aDeine Spitzhacke ist nun §6Level 11");
						p.playSound(p.getLocation(), Sound.LEVEL_UP, 1L, 1L);
						im.addEnchant(Enchantment.DURABILITY, 6, true);
						im.addEnchant(Enchantment.DIG_SPEED, 7, true);
						im.addEnchant(Enchantment.LOOT_BONUS_BLOCKS, 1, false);
						i.setItemMeta(im);
						p.updateInventory();
					}else if(xpd < 1200000 && xpd > 700000) {
						im.setLore(Arrays.asList(" ", "§6" + xpd + "§7/§61200000 XP", "§6Level: §711", " ", "§6§lUpgrade I", "§6§lLevel I"));
						i.setItemMeta(im);
						p.updateInventory();
					}else if(xpd == 1200000) {
						im.setLore(Arrays.asList(" ", "§6" + xpd + "§7/§62000000 XP", "§6Level: §712", " ", "§6§lUpgrade I",  "§6§lLevel I"));
						p.sendMessage(Main.pre + "§aDeine Spitzhacke ist nun §6Level 12");
						p.playSound(p.getLocation(), Sound.LEVEL_UP, 1L, 1L);
						im.addEnchant(Enchantment.DURABILITY, 7, true);
						im.addEnchant(Enchantment.DIG_SPEED, 8, true);
						im.addEnchant(Enchantment.LOOT_BONUS_BLOCKS, 1, false);
						i.setItemMeta(im);
						p.updateInventory();
					}else if(xpd < 2000000 && xpd > 1200000) {
						im.setLore(Arrays.asList(" ", "§6" + xpd + "§7/§62000000 XP", "§6Level: §712", " ", "§6§lUpgrade I", "§6§lLevel I"));
						i.setItemMeta(im);
						p.updateInventory();
					}else if(xpd == 2000000) {
						im.setLore(Arrays.asList(" ", "§6" + xpd + "§7/§63400000 XP", "§6Level: §713", " ", "§6§lUpgrade I", "§6§lLevel I"));
						p.sendMessage(Main.pre + "§aDeine Spitzhacke ist nun §6Level 13");
						p.playSound(p.getLocation(), Sound.LEVEL_UP, 1L, 1L);
						im.addEnchant(Enchantment.DURABILITY, 7, true);
						im.addEnchant(Enchantment.DIG_SPEED, 10, true);
						im.addEnchant(Enchantment.LOOT_BONUS_BLOCKS, 1, false);
						i.setItemMeta(im);
						p.updateInventory();
					}else if(xpd < 3400000 && xpd > 2000000) {
						im.setLore(Arrays.asList(" ", "§6" + xpd + "§7/§63400000 XP", "§6Level: §713", " ", "§6§lUpgrade I", "§6§lLevel I"));
						i.setItemMeta(im);
						p.updateInventory();
					}else if(xpd == 3400000) {
						im.setLore(Arrays.asList(" ", "§6" + xpd + "§7/§65000000 XP", "§6Level: §714", " ", "§6§lUpgrade I", "§6§lLevel I"));
						p.sendMessage(Main.pre + "§aDeine Spitzhacke ist nun §6Level 14");
						p.playSound(p.getLocation(), Sound.LEVEL_UP, 1L, 1L);
						im.addEnchant(Enchantment.DURABILITY, 8, true);
						im.addEnchant(Enchantment.DIG_SPEED, 11, true);
						im.addEnchant(Enchantment.LOOT_BONUS_BLOCKS, 2, false);
						i.setItemMeta(im);
						p.updateInventory();
					}else if(xpd < 5000000 && xpd > 3400000) {
						im.setLore(Arrays.asList(" ", "§6" + xpd + "§7/§65000000 XP", "§6Level: §714", " ", "§6§lUpgrade I", "§6§lLevel I"));
						i.setItemMeta(im);
						p.updateInventory();
					}else if(xpd == 5000000) {
						im.setLore(Arrays.asList(" ", "§6" + xpd + "§7/§67300000 XP", "§6Level: §715", " ", "§6§lUpgrade I", "§6§lLevel I"));
						p.sendMessage(Main.pre + "§aDeine Spitzhacke ist nun §6Level 15");
						p.playSound(p.getLocation(), Sound.LEVEL_UP, 1L, 1L);
						im.addEnchant(Enchantment.DURABILITY, 10, true);
						im.addEnchant(Enchantment.DIG_SPEED, 14, true);
						im.addEnchant(Enchantment.LOOT_BONUS_BLOCKS, 2, false);
						i.setItemMeta(im);
						p.updateInventory();
						
						Firework firework = p.getWorld().spawn(p.getLocation(), Firework.class);
						FireworkEffect effect = FireworkEffect.builder()
								.withColor(Color.RED)
								.flicker(true)
								.trail(true)
								.withFade(Color.AQUA)
								.with(FireworkEffect.Type.BALL_LARGE)
								.build();
								
								FireworkMeta meta = firework.getFireworkMeta();
								meta.addEffect(effect);
								meta.setPower(1);
								
								firework.setFireworkMeta(meta);
								
					}else if(xpd < 7300000 && xpd > 5000000) {
						im.setLore(Arrays.asList(" ", "§6" + xpd + "§7/§67300000 XP", "§6Level: §715", " ", "§6§lUpgrade I", "§6§lLevel I"));
						i.setItemMeta(im);
						p.updateInventory();
					}
				
					
					
					
				
			}else {
			im.setLore(Arrays.asList(" ", "§61§7/§6200 XP", "§6Level: §71", " ", "§6§lUpgrade I"));
			i.setItemMeta(im);
			p.updateInventory();
			return;
			}
			
			}else return;
		}
 
Zuletzt bearbeitet von einem Moderator:
Flown

Flown

Administrator
Mitarbeiter
Wäre nett wenn du das nächste mal Code-Tags verwenden würdest: [code=java]//JAVA CODE HERE[/code]
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Fragen zu "Physics-Body-Editor"? Spiele- und Multimedia-Programmierung 0
J Fragen zur Gui-Aktualisierung Spiele- und Multimedia-Programmierung 2
A Langtons Ameise - Fragen zur Umsetzung Spiele- und Multimedia-Programmierung 1
D Ein paar Fragen... Spiele- und Multimedia-Programmierung 5
H LWJGL: Fragen zum Verständnis Spiele- und Multimedia-Programmierung 7
Helgon Fragen zur Umsetzung Spiele- und Multimedia-Programmierung 17
A Klickgame ala "Harveys neue Augen" oder "Edna bricht aus" in Java programmieren... Fragen zu Kleinig Spiele- und Multimedia-Programmierung 8
Samake03 [Game]"Plumbo - Lost in Depth" Preview und Fragen Spiele- und Multimedia-Programmierung 18
A Fragen zu MMO Spiele- und Multimedia-Programmierung 6
N Ein paar fragen zu JOGL Spiele- und Multimedia-Programmierung 4
M Grundsätzliche Java3D Fragen Spiele- und Multimedia-Programmierung 2
D 3 JMF Fragen Spiele- und Multimedia-Programmierung 8
M Allgemeine Fragen zu JOGL2 / OpenGL3.2 Spiele- und Multimedia-Programmierung 36
M Fragen wegen Spieleprogrammierung Spiele- und Multimedia-Programmierung 17
M Fragen zu meinem Pong-Clone Spiele- und Multimedia-Programmierung 6
S glTexSubImage2D()-Fragen(Zerstörbares Terrain, OpenGL) Spiele- und Multimedia-Programmierung 3
K Game-Tutorial von Quaxli Fragen Spiele- und Multimedia-Programmierung 18
D Zwei Fragen (Exponential Fog und Schein-nach-außen-Effekt) Spiele- und Multimedia-Programmierung 6
H Einstieg erfolgreich ;), nun nur noch paar Fragen^^ Spiele- und Multimedia-Programmierung 13
V Fragen zum PositionPathInterpolator und RotationInterpolator Spiele- und Multimedia-Programmierung 2
N 4 Gewinnt fertig (Kritik, Fragen etc. erwünscht) Spiele- und Multimedia-Programmierung 29
J 3d Programmierung, Fragen: Spiele- und Multimedia-Programmierung 14
T Größeres Spiele Projekt - einige Fragen zur Umsetzung Spiele- und Multimedia-Programmierung 3

Ähnliche Java Themen

Anzeige


Oben