Έφτιαξα σε C99 κι ανεβάσαμε με τον geomagas στο github έναν κλώνο του περιβόητου πλέον 2048 (έχει δημιουργήσει χαμό σε Internet & Smart-phones, ενώ μετράει ήδη δεκάδες κλώνους και παραλλαγές).
Το cc στην ονομασία του κλώνου προς το παρόν σημαίνει Console Clone, αλλά σημειολογικά παραπέμπει στο ότι είναι φτιαγμένο σε C (το αυθεντικό game είναι σε Javascript). Το 2048cc γίνεται compile χωρίς καμία αλλαγή σε Windows, Linux, Unix και MacOSX με οποιονδήποτε C compiler υποστηρίζει C99, αλλά ο προτεινόμενος compiler είναι οποιαδήποτε σύγχρονη έκδοση του gcc (απλά κάντε copy & paste την σχετική γραμμή εντολών από το Readme.md αρχείο στο github). Κατόπιν μετακινήστε το εκτελέσιμο στο ίδιο path με τον φάκελο "replays/" και... have fun
Συγκριτικά με το αυθεντικό παιχνίδι, το 2048cc υποστηρίζει ως έξτρα: Color Skins, Undo/Redo, και Replays, ενώ ενσωματώνει και 3 ανεπίσημες παραλλαγές εκτός της κλασσικής (συνολικά μπορείτε να παίξετε σε ταμπλό 4x4, 5x5, 6x6 και 8x8... η κάθε παραλλαγή έχει διαφορετικά χαρακτηριστικά... π.χ. η 6x6 δημιουργεί 2 τυχαία tiles μετά από κάθε κίνηση, αντί για 1 της κλασικής έκδοσης).
Κατά την άποψή μου, αυτό που ξεχωρίζει το 2048cc από οποιοδήποτε άλλον κλώνο μέχρι στιγμής, είναι τα replays, που και cross-platform αρχεία δημιουργούν και μπορούν να χρησιμοποιηθούν ως Load/Save game. Μπορείτε για παράδειγμα να καταγράψετε μια καλή σας προσπάθεια ως replay αρχείο, και να το μοιραστείτε με άλλους σε οποιαδήποτε πλατφόρμα, για να δουν τις κινήσεις που κάνατε. Κατά την αναπαραγωγή των replays υπάρχει ένδειξη κάτω δεξιά για την προηγούμενη και την επόμενη κίνηση της εκάστοτε τρέχουσας.
Επειδή το παρόν text-user-interface (tui) είναι primitive (single threaded, NOT event-driven, κλπ), αν ξεκινήσετε αυτόματη αναπαραγωγή ενός replay ΔΕΝ μπορείτε να το σταματήσετε... πρέπει να περιμένετε να τελειώσει. Σπαστικό πράγμα, αλλά αντί να σπαταλήσουμε ενέργεια & χρόνο να το βελτιώσουμε στο τρέχον tui, σκοπεύουμε να φτιάξουμε (είτε εμείς είτε κάποιος άλλος) ένα ή περισσότερα γραφικά περιβάλλοντα εργασία (gui). Προς το παρόν, είναι καλύτερη ιδέα να μετακινείστε χειροκίνητα στις καταγεγραμμένες κινήσεις του replay με τα βελάκια και τα πλήκτρα Home & End.
Μπορείτε να δείτε screen-shots από το παιχνίδι, στον φάκελο ss/ στο github. Υπάρχει επίσης έτοιμο εκτελέσιμο για Windows.
Ο λόγος που ανεβάσαμε το παιχνίδι στο Github είναι για να προσελκύσουμε κι άλλους Έλληνες contributors. Στις βασικές προτεραιότητες (χωρίς όμως απολύτως καμία πίεση χρόνου) είναι η δημιουργία ενός ή περισσότερων GUI (cross-platform ή μη) και η προσθήκη AI (Τεχνητής Νοημοσύνης) η οποία θα καθοδηγεί τον παίκτη ως προς το τι να παίξει, αν της το ζητήσει (ενδεχομένως με κάποιο penalty, όπως γίνεται ήδη για τα Undo). Από εκεί και πέρα υπάρχουν μυριάδες ιδέες για περαιτέρω βελτιώσεις (π.χ. online best-scores ανά παραλλαγή, ενσωμάτωση κι άλλων παραλλαγών του game, ευελιξία ρυθμίσεων π.χ μέσω text αρχείων, internationalization, κλπ, κλπ).
Οπότε, ανεξαρτήτως πρωτύτερης εμπειρίας, αν θέλετε να εξασκήσετε τα C skills σας ανώδυνα, χωρίς καμιά πίεση χρόνου, και γενικότερα σε χαλαρή φάση, καθαρά Ελληνική, κάντε fork το github και join us Άλλωστε το game είναι ακόμα σε alpha-version (δηλαδή σε αρχικό στάδιο, χωρίς εξαντλητικό testing). Αλλά νομίζω πως είναι ήδη αρκετά αξιοπρεπές για να βγει public (εξού και το παρόν ποστ).
Αν από την άλλη δεν θέλετε, κανένα πρόβλημα... απλά enjoy the game κι αν σας αρέσει διαδώστε το
Εμφάνιση 1-8 από 8
Θέμα: The 2048cc game
-
12-07-14, 08:55 The 2048cc game #1
-
13-07-14, 02:15 Απάντηση: The 2048cc game #2
Ποια η διαφορά της C99 απο την C;
Έχεις ξεκινήσει κάτι πολύ ενδιαφέρον με το οποίο θα ήθελα να ασχοληθώ αλλά στην παρούσα φάση δεν έχω το χρόνο. Σαν παιχνίδι δεν το ήξερα, δεν ασχολούμαι άλλωστε, το βρήκα όμως πολύ εθιστικό.ουδέν μονιμότερο του προσωρινού
-
13-07-14, 05:49 Απάντηση: The 2048cc game #3
Καλημέρα,
ευχαριστώ για τα καλά λόγια! Ούτε εγώ το ήξερα το παιχνίδι. Τυχαία έμαθα για αυτό πριν από κάνα μήνα, από ένα νήμα στο insomnia, που βασικά στάθηκε και η αφορμή για τη δημιουργία του 2048cc.
C99 είναι η αναθεώρηση της γλώσσας C που επισημοποιήθηκε το 1999 (το 2011 επισημοποιήθηκε κι άλλη αναθεώρηση, η C11, η οποία όμως δεν έχει τύχει μεγάλης αποδοχής... μπορεί και καθόλου). Προσθέτει διάφορες διευκολύνσεις, και νομίζω πως σήμερα δεν υπάρχει δημοφιλής compiler που να μην υποστηρίζει το C99 πρότυπο της γλώσσας (με χτυπητή εξαίρεση νομίζω το Visual Studio της Microsoft). Σε gcc για παράδειγμα το επιθυμητό πρότυπο ορίζεται με το command-line flag -std= και για C99 είναι: gcc -std=c99 ...
Με ένα πρόχειρο googling, βρήκα ένα ποστ με συνοπτική παρουσίαση των διαφορών μεταξύ C99 και C89/C90 (τις παραθέτω σε spoiler):
Spoiler:
Σχετικά με τον ελεύθερο χρόνο, αυτό είναι δυστυχώς πρόβλημα που αντιμετωπίζουμε όλοι μας. Προσωπικά κατά περιόδους άλλοτε έχω πολύ κι άλλοτε καθόλου (αυτήν την περίοδο τείνω προς το... καθόλου, αλλά όλο και ξεκλέβω από λίγο εδώ κι εκεί . Αν το βασικό που σε προβληματίζει είναι η έλλειψη χρόνου, μην ανησυχείς... ακριβώς το ίδιο ισχύει και για μένα, και για τον geomagas και για τον imitheo... οπότε το πάμε στο εντελώς χαλαρό, χωρίς απολύτως καμία πίεση ή προθεσμία.Τελευταία επεξεργασία από το μέλος migf1 : 13-07-14 στις 05:55.
-
14-07-14, 18:32 Απάντηση: The 2048cc game #4
εγκυκλοπαιδικα, το ιδιο παιχνιδι ´ηταν σαν ασκηση να φτιαχτεί σε αυτό το μάθημα Principles of Computing
-
15-07-14, 20:10 Απάντηση: The 2048cc game #5
Όμορφα!
Πάντως εδώ μη φανταστείς πως έχω κάνει utilize τίποτα τρελούς αλγόριθμους. Το αντίθετο, για τις κινήσεις του ταμπλό έχω χρησιμοποιήσει αυτούσιο τον brute αλγόριθμο που είχε ποστάρει εξαρχής στο νήμα του insomnia o φίλος που το είχε ξεκινήσει. Επίσης, σε άλλα πράγματα χρησιμοποιώ διάφορες naive & inefficient προσεγγίσεις, με τις οποίες Ι get away επειδή πρόκειται για πάρα πολύ μικρά data.
Μια από αυτές όμως με "δάγκωσε" πρόσφατα, με αποτέλεσμα να κρασάρει το game όταν επιχειρούσαμε να αποθηκεύσουμε πολύ μεγάλα replays. Βάραγε η realloc() γιατί το serialization το έκανα πρώτα σε ένα τεράστιο string και μετά το έγραφα στο αρχεία. Οπότε περίπου στις 2000 κινήσεις σε πίνακα 8x8 βάραγε μπιέλα η realloc() σε ένα παλιό μηχάνημα με XP και 2Gb μνήμη.
Πριν 3-4 μέρες το διόρθωσα (κάνω απευθείας serialized αποθήκευση στο αρχεία) οπότε αν δεν το έχετε κάνει ήδη, κατεβάστε τη νέα αυτήν έκδοση.
-
21-07-14, 21:04 Απάντηση: The 2048cc game #6
Σε περίπτωση που θελήσει κανείς να φτιάξει αυτόνομο replay viewer για το game, σε οποιαδήποτε γλώσσα, με οποιοδήποτε tui/gui, είτε ως contributor είτε ανεξάρτητα, χωρίς να χρειάζεται καν να ασχοληθεί με τον υπάρχοντα C κώδικα του παιχνιδιού, έκανα σχετικό ποστ στο insomnia που εξηγώ τι χρειάζεται και τι όχι από τα περιεχόμενα των replay-files.
-
27-07-14, 23:52 Απάντηση: The 2048cc game #7
[QUOTE=migf1;5449616
Οπότε, ανεξαρτήτως πρωτύτερης εμπειρίας,αν θέλετε να εξασκήσετε τα C skills σας ανώδυνα, χωρίς καμιά πίεση χρόνου, και γενικότερα σε χαλαρή φάση, καθαρά Ελληνική, κάντε fork το github και join us Άλλωστε το game είναι ακόμα σε alpha-version (δηλαδή σε αρχικό στάδιο, χωρίς εξαντλητικό testing). Αλλά νομίζω πως είναι ήδη αρκετά αξιοπρεπές για να βγει public (εξού και το παρόν ποστ).
[/QUOTE]
Κάτι θα προσπαθήσουμε.
-
04-08-14, 09:15 Απάντηση: The 2048cc game #8
Έτσι, έτσι
Εγώ προς το παρόν έχω ξεκινήσει έναν replayer σε GTK+2 και ο geomagas έναν ακόμα σε Lazarus (αφού πρώτα έκανε επιτυχημένη δοκιμή σε php/javascript).
- - - Updated - - -
Ανέβασα μια 1η λειτουργικά αξιοποιήσιμη έκδοση του replayer εδώ: https://app.box.com/s/0df095nx0r5z31jsinme (zip, ~400Kb) στην οποία δουλεύουν όλα εκτός από την αλλαγή γλώσσας. Το zip περιέχει 32μπιτό εκτελέσιμο Windows + κώδικα (σε τελείως draft μορφή) + sample replay files (αν και μπορείτε να δημιουργήσετε και δικά σας, με το κανονικό game στην κονσόλα/τερματικό).
Για να τρέξει το εκτελέσιμο (main.exe) στα Windows, χρειάζεται το GTK+2.24.10 runtime. Αν δεν το έχετε, μπορείτε να βρείτε installer εδώ: http://gtk-win.sourceforge.net/home/...Main/Downloads
Αν είστε σε Linux, λογικά έχετε προ-εγκατεστημένο το GTK+2. Αν όχι, ή αν έχετε παλιότερη έκδοση από την 2.24.10 μπορείτε να την κατεβάσετε/ενημερώσετε. Σε κάθε διανομή η εντολή διαφέρει, αλλά σε Ubuntu είναι:
Κώδικας:sudo apt-get install libgtk2.0-dev
Κώδικας:cd src gcc -std=c99 -O3 *.c `pkg-config --cflags --libs gtk+-2.0`
Σχετικά με τον κώδικα, όπως γράφω και πιο πάνω, είναι τελείως 1st-draft, αλλά η ιδέα είναι πως μόνο το gui.c καλεί public ρουτίνες από τα υπόλοιπα gui_xxx.c source modules (τα οποία με τη σειρά τους, καλούν μονάχα ρουτίνες που ορίζονται μέσα τους + public ρουτίνες του gui.c).
Εκτός από την προσθήκη internationalization, πρέπει να αλλαχτεί και το auto-play για να δουλεύει με timer αντί για loop με g_usleep() που είναι τώρα (και προφανώς να μπουν και σχόλια παντού, και μετά θα το ανεβάσω και στο Github). Κι από εκεί και πέρα βλέπουμε (π.χ. σκέφτομαι να του βάλω και δυνατότητα για bookmarks).
Αν έχετε χρόνο και διάθεση, κατεβάστε το και δώστε μου λίγο feedback για τυχόν αβλεψίες, βελτιώσεις, κλπ (εννοώ σε επίπεδο χρήσης, όχι στον κώδικα... αλλά αν έχετε το κουράγιο να ασχοληθείτε και με τον κώδικα, ακόμα καλύτερα... είμαι πάντα ανοιχτός σε παρατηρήσεις, προτάσεις, κλπ).
- - - Updated - - -
Βάζω κι ένα screen-shot σε spoiler, να υπάρχει...
Spoiler:
- - - Updated - - -
Είχε πρόβλημα o replayer! Αν τον είχατε κατεβάσει, ξανακατεβάστε τον (έβαλα ενημερωμένη έκδοση στο ίδιο link... ελπίζω να δουλεύει οκ τώρα).
Παρόμοια Θέματα
-
Laptop(gaming) μέχρι 500 άντε 550 ευρώ
Από Spyridon4 στο φόρουμ Laptop, tablet και mobile computingΜηνύματα: 7Τελευταίο Μήνυμα: 23-07-14, 17:46
Bookmarks