Kampfzwerg vs. Hügeltroll hilfe bitte!!

Status
Nicht offen für weitere Antworten.

dorian

Mitglied
Hallo Leute, ich dachte immer ich müsste mich nicht anmelden und kriege das alles so hin aber momentan stehe ich echt vor einer Aufgabe die mich interessiert und ich gerne lösen würde...allerdings Finde ich den Anfang bereits schon nicht...

(Ich bin relativ neu bis naja bisschen erfahren in der java Programmierung, hab 1 Jahr jetzt fast intensiv damit beschäftigt...


Ich hoffe ihr könnt mir helfen !!!

Aufgabe : Kampfzwerg gegen Hügeltroll - wer gewinnt?

Dein Kampfzwerg will wissen, wie groß die Chance ist, einen harten Fight gegen einen gefürchteten Hügeltroll zu bestehen.
Gut ausgerüstet ist er ja, dein Zwerg:

Hitpoints: 43
Angriff: +9
Verteidigung: +9
Rüstungsschutz durch Vollplatte: +5
Schaden Streitaxt "Trollschlächter": +5
Heldenschild: +2

Aber auch der Troll ist nicht von schlechten Eltern:
Hitpoints: 61
Angriff: +8
Verteidigung: +8
fester Lederhaut -> Rüstungsschutz: +3
eisenbeschlagene Keule "Zwergentod": +6

Die Spieleprogrammierer haben die Werte des Zwergs in einen Array gepackt:
Zwerg (43,9,9,5,5,2)
Für den Troll ebenfalls:
Troll (61,8,8,3,6,0)


Für die Kampfsimulation gelten folgende Regeln:

Es wird mit einem 20-seitigen Würfel gewürfelt. Um einen Treffer zu erlangen, muss >= 20 gewürfelt werden. Dabei werden auf den Würfelwurf die Werte für Angriff hinzugezählt. Ist das Ergebnis >= 20 muss sich der Gegner verteidigen. Es wird wieder mit dem Würfel gewürfelt, wobei die Werte für Verteidigung, Rüstung und beim Zwerg auch für den Schild hinzugezählt werden. Ist das Würfelergebnis für den Angriff größer als der Würfelwurf für Verteidigung des Gegners, konnte ein Treffer erzielt werden. Nun wird der bei der Waffe angegeben Wert für Schaden von den Hitpoints des Gegners abgezogen.
Der Kampf findet in Runden statt. In jeder Runde darf jeder einmal angreifen (und muss ggf. sich verteidigen). Danach beginnt die nächste Runde. Wessen Hitpoints zuerst <=0 sind, der hat das Zeitliche gesegnet.
Es sollen insgesamt 100 Deathmatches durchgeführt werden. Dein Programm soll dabei jeweils die Siege von Zwerg und Troll zählen können und am Ende einenn Prozentwert für die Siegwahrscheinlichkeit des Zwerges gegen den Troll ausgeben.



Bevor ihr fragt woher ich die Aufgabe habe : Ich habe sozusagen "Privat-Unterricht" von meinem Lehrer bekommen, damit ich Java weiter verfestige. Ich muss die Aufgabe nicht unbedingt ihm vorzeigen, es wäre aber allerdings sehr cool wenn ich ihm etwas zeigen könnte , wenn ihr wisst was ich meine ;-) !

Bitte um Hilfe

Mit freundlichen Grüßen,

Dorian
 
B

Beni

Gast
Ah, eine Hausaufgabe, habs entsprechend verschoben.

Wie wäre es mit selber versuchen? Immerhin willst du doch was lernen... ;-)
 

dorian

Mitglied
Es ist ja direkt keine "Hausaufgabe" es ist eine wie soll ich sagen lernerweiterung die mir mein Lehrer geschickt hat...das heißt ICH MUSS diese aufgaben NICHT lösen, aber würde es gerne um mehr zu lernen...

ja selber lösen stimmt...ich habs ja probiert aber wenn du mittlerweile 2-3 Tage fast jede nacht da dran sitzt und dann nichts halbes und nichts ganzes rausbekommst ist das auch nichts wahres...

Ich habe Ideen....das mit Arrays zu schreiben die verglichen werden und dann ausgegeben wird z.bsp. System.out.println ("Troll oder Kampfzwerg hat vorteile:"); oder so etwas...

aber das mit den Würfeln verstehe ich nicht und wie das ganze Ablaufen soll...


daher benötige ich Hilfe , nicht die Lösung ...ein Ansatz würde mir schon langen


Mit freundlichen Grüßen,

Dorian
 

Saxony

Top Contributor
Hiho,

der Zwerg ist 4:1 Favourit.

Java:
public static void main(String[] args) {

	int[][] fighters = { { 43, 9, 9, 5, 5, 2 }, { 61, 8, 8, 3, 6, 0 } };
	int[][] result = { { 0 }, { 0 } };
	int attack = 0;
	int defense = 0;
	int hitDwarf = fighters[0][0];
	int hitTroll = fighters[1][0];
	int round = 0;

	Random rand = new Random(System.currentTimeMillis());

	for (int i = 0; i < 100; i++) {

		fighters[0][0] = hitDwarf;
		fighters[1][0] = hitTroll;
		
		while ((fighters[0][0] > 0) && (fighters[1][0] > 0)) {
				
			attack = rand.nextInt(20) + 1 + fighters[round % 2][1];
			if (attack >= 20) {
				defense = rand.nextInt(20) + 1 + fighters[(round + 1) % 2][2]
					+ fighters[(round + 1) % 2][3]
					+ fighters[(round + 1) % 2][5];
				if (attack > defense) {
					fighters[(round + 1) % 2][0] -= fighters[round % 2][4];
					if (fighters[(round + 1) % 2][0] <= 0) {
						result[round % 2][0]++;
					}
				}
			}
			
			round = ++round % 2;
		}
	}
	System.out.println(result[0][0]);
	System.out.println(result[1][0]);
}

bye Saxony
 
Zuletzt bearbeitet:

Geeeee

Bekanntes Mitglied
einem 20-seitigen .... >= 20 gewürfelt
harte regeln. Kenne es nur, dass ein 20er Wurf den Gegner mal in der Luft zerfetzt :p
Back to topic:
Du hast ja deine Startwerte in den Arrays (ist wohl ja so gegeben)
Deine Aufgabe besteht nicht darin, dass du nicht die Arrays gegeneinander abwiegst, sondern den Kampf (bzw. die 100 Kämpfe simulierst).
Dabei solltest du z.B. immer abwechselnd den Troll oder den Zwerg starten lassen. Die genauen Kampfregeln sind ja oben gegeben.
Willst du einen ordentlichen Eindruck machen, könntest du das alles schön objektorientiert gestalten. Die Aufgabe ist für den Einstieg (falls du es noch nicht groß gemacht hast) meines Erachtens gut.
 

Saxony

Top Contributor

Naja so schwer ist es nicht. Der Zwerg bspw. muss etwas zwischen 11 und 20 würfeln damit es zu einem Kampf inkl. Verteidigung kommt. D.h. 45% der Angriffe des Zwerges erfordern eine Verteidigunsaktion des Trolls. 25-150 Aktionen erfordert es bis einer tot ist. Ähm ja... :D

bye Saxony
 
Zuletzt bearbeitet:

dorian

Mitglied
okay wow danke für die super antwort ...jetz is nur noch die frage wer denn jetzt wie gewinnt?? also 86:14 kommt ja raus , aber wer is wer denn nun? ^^

sry für die doofe antwort aber bei so einem hammer quelltext fällt es schwer zu sehen wie wo was :D
 

dorian

Mitglied
ups ...sorry oO ...manchmal übersieht man die einfachsten dinge !!

Thx vielmals


p.s. eine frage hätte ich dann doch noch..(ich weiß ich nerve) ...wie würde es denn aussehen wenn ich das coden würde , bis einer stirbt??? muss ich da die zahlen der attacken verändern ??
 
Zuletzt bearbeitet:

Saxony

Top Contributor
So war noch ein min fehler drin - hab Angriff anstatt Waffen von den LP abgezogen. Zwerg bleibt aber weiterhin Sieger mit 2:1. Ausser der Troll hätte noch irgendwelche Buffs. ;)
 
Zuletzt bearbeitet:
Du könntest auch die Zufallszahl in einer extra Klasse anlegen,

z.B. mit dem Namen "wuerfel"

und diese in dein HauptProgramm mit einbetten. Wäre sicher ein nettes Feature.

Soweit ich gehört habe kannst du auch animierte Bildchen miteinfließen lassen. Vielleicht gibt es da ja noch ein Extralob an dich vom Lehrer ;)

Wie das alles allerdings umzusetzen wäre kann ich dir (wie mein Name schon verrät) leider nicht erklären, aber haben ja hier ein "Profi" mit im Boot. :D (Saxony)
Der kann dir sicher noch weiterhelfen...
Für mich eine gute Übung zum mitverfolgen.:rtfm:
 
Zuletzt bearbeitet:

dorian

Mitglied
Hi um nochmal die Aufgabe aufzugreifen , den Code an sich habe ich jetzt zusammen hingekriegt!!

Jetzt ist nur die Frage wie kann ich das in einem UML Diagramm aufzeigen?? Wie muss das aussehen?
 

Saxony

Top Contributor
Kommt drauf an wie dein Code aussieht!

Also es ist ja schon mal mind. eine Klasse vorhanden -> Klassendiagramm
Den Programmablauf selbst, stellt man am besten mittels Sequenzdiagramm und/oder einem Zustandsdiagramm dar.

Einfach alles mal bei wikipedia suchen...

bye Saxony
 

Geeeee

Bekanntes Mitglied
Also du willst ein Klassendiagramm erstellen.
Dazu wäre es wirklich sehr interessant zu wissen, welche Klassen du denn hast. Einfach so "zwei Klassen nehmen" geht ja auch nur, wenn es durch den Code repräsentiert ist. Eine Beziehung hätten sie ja 1:1 aber mir fällt gerade überhaupt keine "Verbindungsform" (es ist schonmal weder Assoziation noch Komposition noch Aggregation) zwischen den beiden Klassen ein. Wenn du noch eine Klasse z.B. Kampf hättest, könnte man beide als jeweils als Komposition anbinden (ohne Teilnehmer kein Kampf).
 
V

Vayu

Gast
Also bei einem Zwerg und einem Troll solltest du schonmal mindestens 3 Klassen haben ...

Stichwort Vererbung

Klasse Humanoid
Klasse Troll extends Humanoid
Klasse Zwerg extends Humanoid
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben