Autor |
Beitrag |
Nersgatt
      
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Do 27.03.14 18:02
Moin,
die einfachsten Spielideen sind ja doch immer wieder die besten:
gabrielecirulli.github.io/2048/
Gesteuert wird mit den Pfeiltasten.
Bei Tastendruck bewegen sich alle Kästchen in die entsprechende Richtung. Wenn man dabei 2 Kästchen mit der gleichen Zahl "aufeinander" schiebt, so vereinen sich diese Kästchen zu einem einzelnen Kästchen und der Wert des neu entstandenen Kästchens verdoppelt sich.
Ziel ist es, das Kästchen mit der 2048 erscheinen zu lassen.
Ich bin bisher bis zur 512 gekommen.
Suchtpotential ist vorhanden!
Vielleicht möchte ja mal jemand einen hübschen Delphi-Clon machen.
Jens
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
Für diesen Beitrag haben gedankt: Christian S., FinnO, Hidden, Mathematiker, Ralf Jansen, Sinspin, Xion
|
|
Ralf Jansen
      
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Do 27.03.14 18:15
Geil 
|
|
FinnO
      
Beiträge: 1331
Erhaltene Danke: 123
Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
|
Verfasst: Do 27.03.14 20:08
Ich würde soweit gehen und sagen:
Sehr sehr geil.
|
|
Martok
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: Do 27.03.14 20:35
FinnO hat folgendes geschrieben : | Sehr sehr geil. |
Supergeil.
Und wo wir hier grade unter Devs sind. Bin ich der einzige, bei dem das im Palemoon nicht läuft wegen einer Security Violation?
_________________ "The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
|
|
Xion
      

Beiträge: 1952
Erhaltene Danke: 128
Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
|
Verfasst: Do 27.03.14 22:01
Geschafft
Man braucht allerdings schon etwas Glück, mein Feld war mehrmals randvoll
_________________ a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
|
|
Nersgatt 
      
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: Fr 28.03.14 08:34
Hat jemand verstanden, nach welchen Regeln das Auftauchen neuer Felder abläuft? Besteht hier ein Zusammenhang zwischen dem Vereinen von Feldern und dem Auftauchen neuer Felder (an welcher Spielfeldposition und welcher Feldwert)? Oder ist das rein Zufallsgesteuert?
_________________ Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
|
|
Ralf Jansen
      
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Fr 28.03.14 10:54
Aus dem Javascript kann man entnehmen das die Positionierung reiner Zufall ist. Mit 90% Wahrscheinlichkeit ist es dann eine 2 sonst eine 4.
JavaScript-Quelltext 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:
| GameManager.prototype.addRandomTile = function () { if (this.grid.cellsAvailable()) { var value = Math.random() < 0.9 ? 2 : 4; var tile = new Tile(this.grid.randomAvailableCell(), value); this.grid.insertTile(tile); } };
Grid.prototype.randomAvailableCell = function () { var cells = this.availableCells(); if (cells.length) { return cells[Math.floor(Math.random() * cells.length)]; } }; Grid.prototype.availableCells = function () { var cells = []; this.eachCell(function (x, y, tile) { if (!tile) { cells.push({ x: x, y: y }); } }); return cells; }; |
Für diesen Beitrag haben gedankt: Mathematiker, Nersgatt
|
|
Sinspin
      
Beiträge: 1335
Erhaltene Danke: 118
Win 10
RIO, CE, Lazarus
|
Verfasst: Fr 28.03.14 12:08
Sehr schönes Spielchen. Nachdem ich jetzt mehr als einen halben Tag "geopfert" habe und bisher immer nur mal die 512 zu Gesicht bekommen habe muss ich doch erstmal aufgeben. Da die neuen Zahlen zufällig kommen kann ich zumindest dem Zufall die Schuld geben es noch nicht geschafft zu haben. 
_________________ Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
|
|
Delphi-Laie
      
Beiträge: 1600
Erhaltene Danke: 232
Delphi 2 - RAD-Studio 10.1 Berlin
|
Verfasst: Fr 28.03.14 14:57
Nette Spielidee.
Falls es jemand in Delphi & Co. umzusetzen gedenkt: Ich rege an, statt der Zahlen irgendetwas anderes zu nehmen, z.B. Buchstaben im Alphabete aufsteigend. Man muß es dann eben bis zu einem bestimmten Buchstaben schaffen. Grund: Es gibt Leute, die sich allein von Zahlen abgeschreckt fühlen (Aversion gegen Mathematik).
Viel Sympathie wird in dieser Hinsicht beim Sudoku verschenkt, denn das kann man auch mit beliebigen Symbolen "spielen". Wenn ich dann noch die Werbung "Für Freunde der Zahlenlogik" lese, bekomme ich ob dieser Dummheit einen dicken Hals. Mit Mathematik - sofern das Wort "Zahlenlogik" diese suggerieren soll - hat Sudoku nämlich ziemlich wenig zu tun, es zu lösen ist eigentlich nur das Abarbeiten eines Algorithmus'.
Zudem muß bei 2048 nicht Schluß sein (oder ist das Spiel dann zwangsläufig beendet?), sondern "nach oben hin offen". Auch unterschiedliche Spielfeldgrößen wären denkbar.
|
|
Sinspin
      
Beiträge: 1335
Erhaltene Danke: 118
Win 10
RIO, CE, Lazarus
|
Verfasst: Fr 28.03.14 20:18
Ich verweise da mal ganz dezent auf unseren Herren Mathematiker seine Umsetzung 
_________________ Wir zerstören die Natur und Wälder der Erde. Wir töten wilde Tiere für Trophäen. Wir produzieren Lebewesen als Massenware um sie nach wenigen Monaten zu töten. Warum sollte unser aller Mutter, die Natur, nicht die gleichen Rechte haben?
|
|
Palladin007
      
Beiträge: 1282
Erhaltene Danke: 182
Windows 11 x64 Pro
C# (Visual Studio Preview)
|
Verfasst: Fr 28.03.14 22:39
Mein Rekord: 5308
Eine 2048 habe ich nicht geschafft, meine höchste Zahl war die 512 :/
Aber echt sehr geiles Spiel, tolle Idee.
Ich werd mal versuchen, das in C# umzusetzen. ^^
|
|
papa69
      
Beiträge: 79
Erhaltene Danke: 23
Win 10, Ubuntu
C#, Java, C
|
Verfasst: Do 01.05.14 17:50
heut ist mein "Frei"tag
auch wenn's schon etwas her ist, endlich hab auch ich es geschafft (s.Anhang)
Einloggen, um Attachments anzusehen!
_________________ Daniel Bauer
... fatal ist nur, wenn sich das Licht am Ende des Tunnels als entgegenkommender ICE entpuppt ...
|
|
C#
      
Beiträge: 561
Erhaltene Danke: 65
Windows 10, Kubuntu, Android
Visual Studio 2017, C#, C++/CLI, C++/CX, C++, F#, R, Python
|
Verfasst: Fr 02.05.14 15:31
5416
512 beim ersten Versuch. Mann wird das schwer
P.S. kennt jemand das Spiel Flappy48?
_________________ Der längste Typ-Name im .NET-Framework ist: ListViewVirtualItemsSelectionRangeChangedEventHandler
|
|
Dhakiyah
      
Beiträge: 327
Erhaltene Danke: 5
Windows 7
Delphi XE2
|
Verfasst: Di 03.06.14 10:48
Es gibt einen Trick bei diesem Spiel, wenn man den kennt, kommt man recht schnell zur 2048.
Man spielt immer in eine Ecke, z.B. rechts oben. Dann schiebt man nur rechts, links und hoch, nie runter (außer es geht nicht anders).
War schon mehrfach bei 2048, dazu nochmal eine 512, weiter kam ich noch nicht.
Rekord irgedwas bei 30000...
_________________ Es ist soooo flauschig !!!
|
|
Hidden
      
Beiträge: 2242
Erhaltene Danke: 55
Win10
VS Code, Delphi 2010 Prof.
|
Verfasst: Di 03.06.14 20:09
Moin,
Überarbeitete Spielidee: 1: 2: 3: 4: 5: 6:
| 1024 x x x Dieses Spielfeld kann relativ konsistent erreicht werden. 512 64 32 x Anschließend muss auf den markierten Feldern eine 16 zusammengesetzt werden, 256 128 16 x wonach die Zahlen zu 2048 zusammengeschoben werden können. 8 x x x (In der Reihenfolge C3 - C2 - B2 - B3 - A3 - A2 - A1.) A B C D |
Gefahren:
Die A-Reihe sollte stets voll besetzt sein, sodass der Zug [down] ausgeführt werden kann ohne zu riskieren, dass auf A1 eine neue Zahl entsteht und das Feld für immer blockiert.
Solange [A] nicht voll besetzt ist, können wie von Dhakiyah beschrieben nur [left] und [up] gefahrlos ausgeführt werden, was aber nur eingeschränkt oft möglich ist. Ist die 4-Reihe leer und entsteht dort nicht rechtzeitig eine neue Zahl, so muss irgendwann [down] ausgeführt werden. (Das riskiert, dass auf A1 eine Zahl entsteht, was sehr wahrscheinlich bedeutet dass das Spiel verloren ist.)
Sollte irgendwann einmal [right] nötig sein, wird in [A] sofort eine neue Zahl entstehen. Nach [left] verdrängt diese eine der ursprünglich in [A] befindlichen Zahlen. Es kann mehrmals [down] verwendet werden, um zu verändern welche Zahlen verdrängt werden.
Eine große Zahl wie 256 zu verdrängen, bedeutet oft dass das Spiel verloren ist. (Diese verdeckt so lange eines der Register in [A], bis sie unter erschwerten Bedingungen zurück nach [A] addiert werden kann.)
Steine Einrücken (1): 1: 2: 3: 4: 5: 6:
| 1024 x x x Um die 128 auf A3 mit der auf B2 addieren zu können, 512 128 x x muss zuerst B3 auf B4 addiert werden. 128 32 x x 64 4 x x Dazu kann man die B4 von rechts "füttern", bis es gleich B3 ist. A B C D Anschließend folgt ein [down], um B2 auf B3 zu verrücken. | Bem: Das ist nur zwischen den Reihen [2] und [3] möglich, weshalb wir dort die großen Zahlen bauen. Es gibt keine Möglichkeit, einen Stein aus [2] nach [1] zu verschieben, was es erschwert, in [1] oder [4] von rechts zu füttern.
Steine Einrücken (2): 1: 2: 3: 4: 5: 6:
| 1024 32 4 Man verwende so lange [up] und [down], 512 8 32 bis in C3 oder C4 (nach [up]) oder B1 oder B2 (nach [down]) eine Zahl entsteht. 128 64
A B C D |
---
Mich würde mal interessieren, welche Erfolgs-Quote da Programme erreichen. Das Programm von Mathematiker lässt sich doch sicher gut in einen Bot verwandeln, der dann z.B. Dhakiyahs Strategie verwendet und den Tasten [up], [->], [down], [<-] eine Rangordnung verpasst. Ein paar 1000 Durchläufe und wir wissen, wie "schaffbar" das Spiel überhaupt ist, und wie viel Glück man braucht.
viele Grüße,
Daniel
Edit:  Ein Blick in den Thread von Mathematiker zeigt, dass da schon viel passiert ist. (Fehlt eigentlich nur noch eine Berechnung der Quote):
Mathematiker hat folgendes geschrieben : | Edit 7: eine noch sehr einfache Routine (Selbsttest) versucht eine Lösung zu ermitteln.
Edit 8: neue Version des Selbsttests (löst auch 5x5 "fast" immer).
Edit 9: Selbsttest mit 4 Züge Vorausberechnung (löst auch 4x4, aber ganz selten )
Edit 10: Algorithmus verbessert, so dass 4x4 häufiger, jedoch noch nicht immer, gelöst wird.
Edit 11: 5 Züge Vorausberechnung und die Lösung von 4x4 wird langsam häufiger. |
_________________ Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)
|
|
|