# Spiel Achtung Kurve



## yyannekk (6. Sep 2011)

Moin moin,
Hab über längere Zeit an dem Spiel Achtung Kurve ( wikipedia ) gewerkelt.
Achtung Kurve ist ein Minispiel für 2 bis 6 Spieler an einem Computer (Geschicklichkeit, Taktik) . Es ist relativ simpel kann aber einen Heidenspaß machen. Jeder spieler steuert eine Art Schlange die eine Spur hinterlässt (und ab und zu Löcher). Diese Spur darf von niemandem berührt werden. Für die Spielsteuerung benötigt man lediglich 2 Tasten.

Wichtig ist dass ihr mindestens zu zweit seit alleine kann man es relativ schlecht spielen. Richtig Spaß macht es (meiner Meinung nach) wenn man es in Teams spielt.
Aber seht selbst....

Für Lob, Kritik, Verbesserungsvorschläge oder Meldung von Bugs ( oder Performance Problemen, bin mir nicht sicher wie performant das Spiel auf älteren/langsamen Rechnern/Laptops ist ) bin ich offen

Die aktuelle Version ist mehr oder weniger eine Kopie des Originals, allerdings habe ich schon etliche Features quasie fertig die demnächst kommen (Stichwort Replays, Netzwerk, evtl Waffen, globale Effekte usw)


----------



## Fu3L (8. Sep 2011)

Moin,

ich habe das Spiel heute mal getestet und wir fanden es sehr unterhaltsam, läuft auch sehr gut 
In 4 Partien haben wir noch nicht die nötige Fingerfertigkeit erreicht, aber mit mehr Übung bestimmt gut steuerbar.
Vielleicht sollten die Punkte aber etwas weiter vom Rand entfernt starten oder sich anfangs nicht direkt auf den Rand zubewegen.. Das hat bei uns die meisten Punkte gekostet^^


----------



## Marco13 (8. Sep 2011)

Nur kurz getestet, schien zu funktionieren. Sind die Löcher in der Spur eigentlich ein Feature oder ein """Feature""" ?


----------



## Fu3L (8. Sep 2011)

Also bei Wiki sind die mit drin und die sind ganz praktisch, wie ich gestern feststellte, weil man sonst zu schnell eingemauert wird.
(Die dann aber zu treffen, ist die andere Kunst )


----------



## fleckdalm (4. Okt 2011)

Ich finde dein Spiel auch echt toll!
Was mich interessieren würde ist wie machst du die striche? Ich würde es wahrscheinlich mit einer punkte arrayList machen(hab ich bei snake so gemacht) machst du das auch so? Vor allem (wenn du es so machst) wie weißt du wo du den nächsten Punkt zeichnen sollst (also wie kriegst du es hin das es im richtigen Winkel gezeichnet wird?)?
Wäre toll wenn du(oder auch jemand anderes der es weiß) mir das ein bisschen erklären könntest!

Danke, Grüße Fleckdalm


----------



## yyannekk (4. Okt 2011)

Also für jeden Spieler gibt es ein Spieler Objekt. Jeder Spieler hat eine Position ( x , y ) und einen Winkel der die Ausrichtung des Spielers angibt. In der Main-Schleife wird jeder Spieler einen Schritt weiterbewegt. Dies wird in etwa so berechnet:

```
if (rechtsGedrueckt) //rechtsGedrueckt und linksGedrueckt sind boolean Variablen die
                                            //speichern ob von dem Spieler gerade
                                            //die rechte oder linke Taste gedrueckt wird
		{
			winkel += 5;
		}
		if (linksGedrueckt)
		{
			winkel -= 5;
		}
		
		double dx = Math.cos(Math.toRadians(winkel));
		double dy = Math.sin(Math.toRadians(winkel));

		x += dx;
		y += dy;
```

ansonsten wird auf einem BufferedImage gezeichnet. Die ganzen Positionen werde nicht in einer Liste gespeichert, das ist nicht notwendig (im Gegensatz zu Snake) da ja die Spur "für immer" bleibt. Es wird also nur die aktuelle Posi im Spieler Objekt gespeichert


----------



## fleckdalm (5. Okt 2011)

Danke für deine ausführliche Antwort!
Nur wenn du immer nur den letzten punkt speicherst, wie machst du dann die kollisionserkennung?

Danke, Grüße fleckdalm


----------



## Quaxli (5. Okt 2011)

Schönes Spiel. Läuft auch auf meiner Büro-Möhre flüssig. Die "Löcher" in der Linie sind unterschiedlich groß. Ist das gewollt?
Außerdem vermisse ich eine Restart-Funktion. Oder habe ich die nur übersehen?


----------



## yyannekk (5. Okt 2011)

@fleckdalm
Die Kollisionsabfrage erfolgt über das BufferedImage. Im Prinzip wird abgefragt ob der Bereich auf dem der Spieler im nächsten Schritt sein wird bereits bemalt ist, oder noch Schwarz ist. Ist er bemalt stirbt er, sonst gehts weiter.

@Quaxli
Die Löcher sollen unterschiedlich groß sein. Ich werde es allerdings so bauen, das man in den Optionen selber wählen kann wie groß die Löcher seien sollen und mit welcher Varianz sie verschiedene Größen annehmen sollen.
Das mit der Restart Funktion ist eine gute Idee, das werde ich denke ich anstatt dem Programmende auf Esc legen.


----------



## Blakh (7. Okt 2011)

Hallo,
wenn man keinen Spieler registriert, hängt sich das SPiel bei mir irgendwie auf. Und bei einem Spieler, startet das Spiel nicht neu, wenn man crasht .

MfG


----------



## hdi (7. Okt 2011)

Hier mal mein Feedback:
Ich konnte das Spiel selbst zwar nicht spielen da ich hier alleine rumsitze (Ich verlange eine Singleplayer Version! ), aber ich habe schon das mit der Spielerzuweisung im Menü nicht verstanden. Ich konnte mit den Buchstaben in den Klammern nix anfangen, und wusste nicht genau was ich tun soll. Hab dann irgendwelche Tasten gedrückt und das Spiel hat gestartet. War wie gesagt nach 1 Sekunde aus weil ich konnte nicht 2 Spieler steuern - aber ich hätte auch nicht gewusst, mit welchen Tasten ich den zweiten überhaupt steuern kann. Vllt überarbeitest du das Menü noch mit einer entsprechenden Erklärung oder so. Platz genug ist ja noch vorhanden 

PS: Was mich beeindruckt hat war aber die Art und Weise in der der eigentliche Start des Matches eingeläutet wurde. Die Sache mit dem Aufblinken für den ersten und dann den zweiten Spieler ist eine sehr gute Idee - nicht so wie bei den meisten anderen Snake-Ablegern wo das Spiel losgeht und man ist beim ersten mal gleich in der Wand bevor man überhaupt Zeit hat sich das Spielfeld anzusehen. Und dieser Gloom-Effekt ist auch hübsch!


----------



## yyannekk (9. Okt 2011)

Ja das Spiel mit 0 oder 1 Spieler starten Problem ist notiert ...
Ansonsten bin ich auch gerade dabei eine Art Singleplayer zu bauen. Allerdings ohne KI sondern verschiedene Level die es gilt zu durchkurven.. Update erscheint wohl in den nächsten paar Tagen.

@hdi
eigentlich sollte da ein kurzer Erklärungstext stehen. Keine Ahnung warum er bei dir nicht auftaucht. Evtl wurde der Hintergrund bei dir in weiß geladen? Die Schrift ist weiß und der Hintergrund sollte eigetnlich schwarz sein. Ansonsten stehen hinter jedem Spieler seine Tasten. Mit "rechts" kann man einen Spieler anmelden, mit "links" abmelden.

Und danke schonmal an alle fürs Feedback...


----------



## hdi (10. Okt 2011)

Ne war schon alles richtig. Hab's mir grad nochmal angesehen und hab's jetzt kapiert. Ich hab das "zB S für Spieler 1" nicht auf den Spieler bezogen, sondern auf die Taste. Sprich ich dachte man kann die Taste selbst wählen. Deswegen hab ich wild auf der Tastatur rumgehämmert und mich gewundert warum nix passiert.

Vorschlag: Schreib das mit dem Registrieren etwas genauer und neben jeden einzelnen Spieler, also:



> Spieler 1 - Steuerung mit Q und S. Bitte S drücken, um Spieler am Spiel teilnehmen zu lassen.
> Spieler 2 - Steuerung mit X und V. Bitte V drücken, um Spieler am Spiel teilnehmen zu lassen.
> ....



Vielleicht denkst du dir "na wer ist bitte so dumm und peilt das nicht?" Antwort: Ich ;(

(Immer vom DAU ausgehen...)

PS: Die beiden Spieler sind grad genau nebeneinander gespawnt. Ich hatte schon Angst dass gleich Gameover ist weil sie ineinander rennen. War aber nicht so, vermutlich hast du diesen Fall beim programmieren bedacht? Falls nicht wollt nur mal Bescheid geben

PPS: Man muss nach dem Gameover erst ein neues Spiel starten um das Programm beenden zu können, das solltest du fixen. Vorallem weil nach dem Gameover die Einblendung mit dem ESC nicht mehr angezeigt wird, d.h. wer im Menü vor dem Spiel nicht drauf geachtet hat, hat keine Ahnung wie er das Spiel beenden kann. Er wird den Stecker ziehen, PC neu starten und dein Spiel nie wieder spielen (hab ich schon erwähnt, immer vom DAU ausgehen? )


----------



## Gast2 (10. Okt 2011)

> PS: Die beiden Spieler sind grad genau nebeneinander gespawnt. Ich hatte schon Angst dass gleich Gameover ist weil sie ineinander rennen. War aber nicht so, vermutlich hast du diesen Fall beim programmieren bedacht? Falls nicht wollt nur mal Bescheid geben


Das ist beim Original auch nicht bedacht. Ich würds so lassen, ein wenig Herzrasen beim Start gehört einfach dazu


----------



## hdi (10. Okt 2011)

Ja okay, aber ich würds zumindest so machen dass man es retten kann mit entsprechener Reaktion. Aber nicht 1px nebeneinander, das würd ich persönlich einfach unfair und doof finden. Wenn du den Radius auf 10px minimierst dann ist das schon Herzrasen genug, aber immerhin noch machbar.


----------

