Εμφάνιση 1-8 από 8

Θέμα: The 2048cc game

  1. #1
    Εγγραφή
    20-11-2006
    Ηλικία
    56
    Μηνύματα
    797
    Downloads
    0
    Uploads
    0
    Ταχύτητα
    14566/1006
    ISP
    HOL
    DSLAM
    HOL - ΑΘΗΝΑ
    Router
    Pirelli (λευκό)
    SNR / Attn
    9(dB) / 15(dB)
    Path Level
    Interleaved
    Έφτιαξα σε 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 κι αν σας αρέσει διαδώστε το

  2. #2
    Εγγραφή
    09-09-2005
    Περιοχή
    Θεσσαλονίκη
    Ηλικία
    52
    Μηνύματα
    1.081
    Downloads
    32
    Uploads
    0
    Τύπος
    FTTH
    Ταχύτητα
    200Mbps/200Mbps
    ISP
    INALAN - OTE
    DSLAM
    ΟΤΕ - ΒΑΡΝΑΣ
    Router
    HAUWEI HG8546M
    Ποια η διαφορά της C99 απο την C;

    Έχεις ξεκινήσει κάτι πολύ ενδιαφέρον με το οποίο θα ήθελα να ασχοληθώ αλλά στην παρούσα φάση δεν έχω το χρόνο. Σαν παιχνίδι δεν το ήξερα, δεν ασχολούμαι άλλωστε, το βρήκα όμως πολύ εθιστικό.
    ουδέν μονιμότερο του προσωρινού

  3. #3
    Εγγραφή
    20-11-2006
    Ηλικία
    56
    Μηνύματα
    797
    Downloads
    0
    Uploads
    0
    Ταχύτητα
    14566/1006
    ISP
    HOL
    DSLAM
    HOL - ΑΘΗΝΑ
    Router
    Pirelli (λευκό)
    SNR / Attn
    9(dB) / 15(dB)
    Path Level
    Interleaved
    Καλημέρα,

    ευχαριστώ για τα καλά λόγια! Ούτε εγώ το ήξερα το παιχνίδι. Τυχαία έμαθα για αυτό πριν από κάνα μήνα, από ένα νήμα στο 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:

    (Copy & Paste από: http://cboard.cprogramming.com/c-pro...ml#post1013204)

    Index of /JTC1/sc22/wg14/www/docs/n869

    Originally Posted by ISO committee:
    — restricted character set support in <iso646.h> (originally specifed in AMD1)
    — wide-character library support in <wchar.h> and <wctype.h> (originally specifed in AMD1)
    — restricted pointers
    — variable-length arrays
    — fexible array members
    — complex (and imaginary) support in <complex.h>
    — type-generic math macros in <tgmath.h>
    — the long long int type and library functions
    — increased translation limits
    — remove implicit int
    — the vscanf family of functions
    — reliable integer division
    — universal character names
    — extended identifers
    — binary foating-point literals and printf/scanf conversion specifers
    — compound literals
    — designated initializers
    — // comments
    — extended integer types in <inttypes.h> and <stdint.h>
    — remove implicit function declaration
    — preprocessor arithmetic done in intmax_t/uintmax_t
    — mixed declarations and code
    — integer constant type rules
    — integer promotion rules
    — vararg macros
    — additional math library functions in <math.h>
    — foating-point environment access in <fenv.h>
    — IEC 60559 (also known as IEC 559 or IEEE arithmetic) support
    — trailing comma allowed in enum declaration
    — %lf conversion specifer allowed in printf
    — inline functions
    — the snprintf family of functions
    — boolean type in <stdbool.h>
    — idempotent type qualifers
    — empty macro arguments
    — new struct type compatibility rules (tag compatibility)
    — _Prama preprocessing operator
    — standard pragmas
    — __func__ predefned identifer
    — VA_COPY macro
    — additional strftime conversion specifers
    — LIA compatibility annex
    — deprecate ungetc at the beginning of a binary file
    — remove deprecation of aliased array parameters

    Σχετικά με τον ελεύθερο χρόνο, αυτό είναι δυστυχώς πρόβλημα που αντιμετωπίζουμε όλοι μας. Προσωπικά κατά περιόδους άλλοτε έχω πολύ κι άλλοτε καθόλου (αυτήν την περίοδο τείνω προς το... καθόλου, αλλά όλο και ξεκλέβω από λίγο εδώ κι εκεί . Αν το βασικό που σε προβληματίζει είναι η έλλειψη χρόνου, μην ανησυχείς... ακριβώς το ίδιο ισχύει και για μένα, και για τον geomagas και για τον imitheo... οπότε το πάμε στο εντελώς χαλαρό, χωρίς απολύτως καμία πίεση ή προθεσμία.
    Τελευταία επεξεργασία από το μέλος migf1 : 13-07-14 στις 05:55.

  4. #4
    Εγγραφή
    19-05-2012
    Ηλικία
    43
    Μηνύματα
    723
    Downloads
    2
    Uploads
    0
    ISP
    Forthnet
    εγκυκλοπαιδικα, το ιδιο παιχνιδι ´ηταν σαν ασκηση να φτιαχτεί σε αυτό το μάθημα Principles of Computing

  5. #5
    Εγγραφή
    20-11-2006
    Ηλικία
    56
    Μηνύματα
    797
    Downloads
    0
    Uploads
    0
    Ταχύτητα
    14566/1006
    ISP
    HOL
    DSLAM
    HOL - ΑΘΗΝΑ
    Router
    Pirelli (λευκό)
    SNR / Attn
    9(dB) / 15(dB)
    Path Level
    Interleaved
    Παράθεση Αρχικό μήνυμα από dimr Εμφάνιση μηνυμάτων
    εγκυκλοπαιδικα, το ιδιο παιχνιδι ´ηταν σαν ασκηση να φτιαχτεί σε αυτό το μάθημα Principles of Computing
    Όμορφα!

    Πάντως εδώ μη φανταστείς πως έχω κάνει utilize τίποτα τρελούς αλγόριθμους. Το αντίθετο, για τις κινήσεις του ταμπλό έχω χρησιμοποιήσει αυτούσιο τον brute αλγόριθμο που είχε ποστάρει εξαρχής στο νήμα του insomnia o φίλος που το είχε ξεκινήσει. Επίσης, σε άλλα πράγματα χρησιμοποιώ διάφορες naive & inefficient προσεγγίσεις, με τις οποίες Ι get away επειδή πρόκειται για πάρα πολύ μικρά data.

    Μια από αυτές όμως με "δάγκωσε" πρόσφατα, με αποτέλεσμα να κρασάρει το game όταν επιχειρούσαμε να αποθηκεύσουμε πολύ μεγάλα replays. Βάραγε η realloc() γιατί το serialization το έκανα πρώτα σε ένα τεράστιο string και μετά το έγραφα στο αρχεία. Οπότε περίπου στις 2000 κινήσεις σε πίνακα 8x8 βάραγε μπιέλα η realloc() σε ένα παλιό μηχάνημα με XP και 2Gb μνήμη.

    Πριν 3-4 μέρες το διόρθωσα (κάνω απευθείας serialized αποθήκευση στο αρχεία) οπότε αν δεν το έχετε κάνει ήδη, κατεβάστε τη νέα αυτήν έκδοση.

  6. #6
    Εγγραφή
    20-11-2006
    Ηλικία
    56
    Μηνύματα
    797
    Downloads
    0
    Uploads
    0
    Ταχύτητα
    14566/1006
    ISP
    HOL
    DSLAM
    HOL - ΑΘΗΝΑ
    Router
    Pirelli (λευκό)
    SNR / Attn
    9(dB) / 15(dB)
    Path Level
    Interleaved
    Σε περίπτωση που θελήσει κανείς να φτιάξει αυτόνομο replay viewer για το game, σε οποιαδήποτε γλώσσα, με οποιοδήποτε tui/gui, είτε ως contributor είτε ανεξάρτητα, χωρίς να χρειάζεται καν να ασχοληθεί με τον υπάρχοντα C κώδικα του παιχνιδιού, έκανα σχετικό ποστ στο insomnia που εξηγώ τι χρειάζεται και τι όχι από τα περιεχόμενα των replay-files.

  7. #7
    Εγγραφή
    04-02-2009
    Ηλικία
    33
    Μηνύματα
    1.486
    Downloads
    4
    Uploads
    0
    Τύπος
    ADSL
    Ταχύτητα
    2048/256
    ISP
    Cyta Hellas
    [QUOTE=migf1;5449616
    Οπότε, ανεξαρτήτως πρωτύτερης εμπειρίας,αν θέλετε να εξασκήσετε τα C skills σας ανώδυνα, χωρίς καμιά πίεση χρόνου, και γενικότερα σε χαλαρή φάση, καθαρά Ελληνική, κάντε fork το github και join us Άλλωστε το game είναι ακόμα σε alpha-version (δηλαδή σε αρχικό στάδιο, χωρίς εξαντλητικό testing). Αλλά νομίζω πως είναι ήδη αρκετά αξιοπρεπές για να βγει public (εξού και το παρόν ποστ).

    [/QUOTE]
    Κάτι θα προσπαθήσουμε.

  8. #8
    Εγγραφή
    20-11-2006
    Ηλικία
    56
    Μηνύματα
    797
    Downloads
    0
    Uploads
    0
    Ταχύτητα
    14566/1006
    ISP
    HOL
    DSLAM
    HOL - ΑΘΗΝΑ
    Router
    Pirelli (λευκό)
    SNR / Attn
    9(dB) / 15(dB)
    Path Level
    Interleaved
    Έτσι, έτσι

    Εγώ προς το παρόν έχω ξεκινήσει έναν 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
    Κατόπιν μπορείτε να κάνετε compile τα sources:
    Κώδικας:
    cd src
    gcc -std=c99 -O3 *.c `pkg-config --cflags --libs gtk+-2.0`
    * προσέξτε πως τα εισαγωγικά στο τέλος είναι επίτηδες back-ticks (ανάποδα μονά εισαγωγικά δηλαδή).

    Σχετικά με τον κώδικα, όπως γράφω και πιο πάνω, είναι τελείως 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:

    Πατήστε στην εικόνα για να τη δείτε σε μεγέθυνση. 

Όνομα:  gtk2_replayer.png 
Εμφανίσεις:  7 
Μέγεθος:  101,0 KB 
ID: 142598


    - - - Updated - - -

    Είχε πρόβλημα o replayer! Αν τον είχατε κατεβάσει, ξανακατεβάστε τον (έβαλα ενημερωμένη έκδοση στο ίδιο link... ελπίζω να δουλεύει οκ τώρα).

Παρόμοια Θέματα

  1. Laptop(gaming) μέχρι 500 άντε 550 ευρώ
    Από Spyridon4 στο φόρουμ Laptop, tablet και mobile computing
    Μηνύματα: 7
    Τελευταίο Μήνυμα: 23-07-14, 17:46

Bookmarks

Bookmarks

Δικαιώματα - Επιλογές

  • Δεν μπορείτε να δημοσιεύσετε νέα θέματα
  • Δεν μπορείτε να δημοσιεύσετε νέα μηνύματα
  • Δεν μπορείτε να αναρτήσετε συνημμένα
  • Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας
  •  
  • Τα BB code είναι σε λειτουργία
  • Τα Smilies είναι σε λειτουργία
  • Το [IMG] είναι σε λειτουργία
  • Το [VIDEO] είναι σε λειτουργία
  • Το HTML είναι εκτός λειτουργίας