Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Διόρθωσα (νομίζω) ένα bug που είχαν όλες οι εκδόσεις πριν την 0.3a1 με τα ταμπλό 6x6 (το πρόβλημα είχε να κάνει με το ότι στην 6x6 παραλλαγή του παιχνιδιού δημιουργούνται 2 τυχαία tiles αντί για 1 μετά από κάθε κίνηση).

 

Ανέβασα την 0.3a1 στο αμέσως προηγούμενο ποστ.

 

ΥΓ. Μην σκοτώνεστε για το ποιος θα πρωτo-κατεβάσει to game :lol:

  • Απαντ. 272
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

Συχνή συμμετοχή στο θέμα

Δημοσιευμένες Εικόνες

Δημοσ.

Ωραίος.

 

Μια παρατήρηση: Στο readme εχεις κανει λαθος στην εντολή για το compile.

 

Και μία πρόταση: βάλε κάποιο border γύρω απο το νέο block που εμφανίζεται σε κάθε κίνηση, γιατι χωρίς animation μερικές φορές μπερδεύει.

Δημοσ.

Ωραίος.

 

Μια παρατήρηση: Στο readme εχεις κανει λαθος στην εντολή για το compile.

 

Και μία πρόταση: βάλε κάποιο border γύρω απο το νέο block που εμφανίζεται σε κάθε κίνηση, γιατι χωρίς animation μερικές φορές μπερδεύει.

Ευχαριστώ!

 

Το διόρθωσα το readme (thanks!), και διόρθωσα κι άλλα bugs που βρήκα στον κώδικα (τα έγραψα πριν λίγο εδώ: http://www.insomnia.gr/topic/532930-ιδέες-για-project-σε-c/page-7#entry53315728).

 

Αυτό με το border, το δοκίμασα στην αρχή, αλλά είχα μεγάλο πρόβλημα χώρου μετά με τους μεγάλους πίνακες (6x6, 8x8).

 

Βασικά πρέπει να φτιαχτεί GUI για το game, χάνει πολύ σε text-mode :(

Δημοσ.

Αυτό με το border, το δοκίμασα στην αρχή, αλλά είχα μεγάλο πρόβλημα χώρου μετά με τους μεγάλους πίνακες (6x6, 8x8).

Για ποιο λόγο; Το border δεν χρειάζεται να κανει το block μεγαλύτερο

Δημοσ.

ωραίο θα ήταν να υπάρχει επιλογή όταν ξεκινάει για CLI/GUI...αλλά δεν ξέρω κατά πόσο είναι εύκολο στον υπάρχοντα κώδικα να προστεθεί το GUI, δηλαδή πόσο resuable-extensible είναι ο κώδικας με το τρόπο που είναι δομημένος.

Επίσης ωραίο θα ήταν να είναι platform independent οπότε να παίζει σε Win/OSX/Linux...Ίσως κάτι σε TK/Python (TKinter) για το GUI ή GTK+...

Δημοσ.

Για ποιο λόγο; Το border δεν χρειάζεται να κανει το block μεγαλύτερο

Τι εννοείς δεν χρειάζεται; Π.χ. σε πίνακα 8χ8 το ύψος των tiles είναι 2 γραμμές( και το όλο board έρχεται τσίμα-τσίμα σε πλάτος με το help-area... πάει και κολλάει δίπλα του, χωρίς να αφήνει κανένα κενό). Οπότε με 2 γραμμές ύψος ανά tile, πώς θα βάλουμε border τριγύρω του; Επίσης, δεν νομίζω πως είναι εύκολο να μπει border μονάχα σε ένα tile, πρέπει να μπει σε όλα (αλλιώς πως θα το κάνουμε draw μέσα στο board μόνο του).

 

Αν θέλεις να το ψάξεις μήπως βρεις εύκολη λύση που μου διαφεύγει, η σχετική συνάρτηση που καθορίζει τα drawing dimensions του κάθε tile είναι η _scrbox_tile_set_from_dim( struct _scrbox *box, int dim ), στο αρχείο tui.c Την χρησιμοποιεί η συνάρτηση: _init_layout( Tui *tui, const Board *board ) (στο ίδιο αρχείο, ακριβώς από κάτω της).

Δημοσ.

ωραίο θα ήταν να υπάρχει επιλογή όταν ξεκινάει για CLI/GUI...αλλά δεν ξέρω κατά πόσο είναι εύκολο στον υπάρχοντα κώδικα να προστεθεί το GUI, δηλαδή πόσο resuable-extensible είναι ο κώδικας με το τρόπο που είναι δομημένος.

Επίσης ωραίο θα ήταν να είναι platform independent οπότε να παίζει σε Win/OSX/Linux...Ίσως κάτι σε TK/Python (TKinter) για το GUI ή GTK+...

 

Το σκεφτόμουν κι εγώ, αλλά δεν έχω βρει την ευκαιρία να "σκαλίσω" τον κώδικα για να έχω άποψη.

 

Το μυαλό μου πήγε στο Lazarus, όπου αυτά τα πράγματα γίνονται σχετικά εύκολα. Απ' ότι θυμάμαι (έχω καιρό να ασχοληθώ) υποστηρίζει πολλές πλατφόρμες, και παλιότερα είχα καταφέρει να κάνω εύκολα linking με .o από C.

 

Just a thought.

Δημοσ.

Ούτε εγώ τον έχω δει αναλυτικά τον κώδικα, οπότε ας μας πει ο creator κατά πόσο γίνεται εύκολα ή μη στην παρούσα μορφή του.

Δημοσ.

[..]Αυτό με το border, το δοκίμασα στην αρχή, αλλά είχα μεγάλο πρόβλημα χώρου μετά με τους μεγάλους πίνακες (6x6, 8x8).[..]

Το ίδιο πρόβλημα αντιμετώπισα και εγώ γράφοντας σήμερα ένα μικρό κλώνο του 2048 σε C++ Builder XE καθώς το UI δεν υποστηρίζει animation και δεν είχα την διάθεση να υλοποιήσω κάτι δικό μου από το μηδέν.

 

Η λύση στην οποία κατέληξα είναι να αναβοσβήνω για μερικά δευτερόλεπτα τον τίτλο (αριθμό) του νέου tile ώστε να τραβώ την προσοχή του παίκτη τόσο ώστε να γνωρίζει το εάν και που εμφανίστηκε το νέο tile..

 

 

 

Οπότε ίσως μια τέτοια προσέγγιση σε εξυπηρετήσει.

 

Υ.Γ.

@geomagas: Σε αλά-Delphi (VCL) εργαλεία όπως είναι ο C++ Builder το πρόγραμμα μου βγήκε περίπου 588 γραμμές με όλα τα component να δημιουργούνται δυναμικά κατά το run-time (καθώς σκοπεύω να αναρτήσω μελλοντικά τον κώδικα του) - αν το έγραφα ως τυπική εφαρμογή C++ Builder θα ήταν μικρότερο (αφού το UI θα το παρήγαγε δυναμικά/κρυφά το IDE).

 

Εξίσου μικρό μέγεθος θα έχει (ίσως και μικρότερο) αν γραφθεί σε .NET

  • Like 1
Δημοσ.

ωραίο θα ήταν να υπάρχει επιλογή όταν ξεκινάει για CLI/GUI...αλλά δεν ξέρω κατά πόσο είναι εύκολο στον υπάρχοντα κώδικα να προστεθεί το GUI, δηλαδή πόσο resuable-extensible είναι ο κώδικας με το τρόπο που είναι δομημένος.

Επίσης ωραίο θα ήταν να είναι platform independent οπότε να παίζει σε Win/OSX/Linux...Ίσως κάτι σε TK/Python (TKinter) για το GUI ή GTK+...

Δεν πρέπει να είναι και πολύ δύσκολο, γιατί έχω προσπαθήσει να κάνω ικανοποιητικό decoupling μεταξύ ui και υπόλοιπων συστατικών του game.

 

Λογικά αρκεί να αντικατασταθούν τα tui.c & tui_skin.c με αντίστοιχα gui.c και gui.skin.c, και κατόπιν να προσαρμοστεί ανάλογα το main.c

 

Αν δεις για παράδειγμα τον κώδικα της main() φτιάχνει ένα tui object στην _alloc() και κατόπιν το περνάει στις υπόλοιπες συναρτήσεις σαν παράμετρο... προφανώς έχει και μερικά direct calls στο κυρίως σώμα της, αλλά σε γενικές γραμμές υπάρχει νομίζω ικανοποιητικό decoupling.

 

Εφόσον πρόκειται για C project, νομίζω πως το GTK+ είναι η ενδεδειγμένη πρόταση για GUI. Εννοείται πως κι εγώ θέλω να είναι cross-platform, αλλά προφανώς δεν θα πω όχι αν κάποιος προθυμοποιηθεί να φτιάξει platform dependent GUI :)

 

Επίσης, νομίζω πως τα replay-files έχουν όλες τις απαραίτητες πληροφορίες που μπορεί να χρειαστεί ένα GUI (δεν είμαι 100% σίγουρος, αλλά νομίζω πως τις έχουν). Οπότε αν κάποιος θελήσεις να πειραματιστεί με GUI για το game, θα μπορούσε νομίζω να ξεκινήσει φτιάχνοντας έναν replay player, με μόνο input ότι περιέχει το replay file.

 

@Dx: Είσαι μεγάλος παίκτης! Αυτό θα κάνω... και είναι κι εύκολο θαρρώ γιατί έχω ήδη αυτονομημένο το drawing του κάθε tile! Thanks!

Δημοσ.

Υ.Γ.

@geomagas: Σε αλά-Delphi (VCL) εργαλεία όπως είναι ο C++ Builder το πρόγραμμα μου βγήκε περίπου 588 γραμμές με όλα τα component να δημιουργούνται δυναμικά κατά το run-time (καθώς σκοπεύω να αναρτήσω μελλοντικά τον κώδικα του) - αν το έγραφα ως τυπική εφαρμογή C++ Builder θα ήταν μικρότερο (αφού το UI θα το παρήγαγε δυναμικά/κρυφά το IDE).

 

Εξίσου μικρό μέγεθος θα έχει (ίσως και μικρότερο) αν γραφθεί σε .NET

 

Ok, και που είναι το πρόβλημα; Στον αριθμό των γραμμών;

 

Πάντως, δεν βλέπω το λόγο να μην μπορούν να αναπτυχθούν πολλά (g)ui ταυτόχρονα, και η επιλογή να γίνεται είτε στο compile time είτε στο runtime. Το ίδιο ισχύει και για το (τα) AI.

Δημοσ.

Ok, και που είναι το πρόβλημα; Στον αριθμό των γραμμών;[..]

Πουθενά δεν υπάρχει πρόβλημα - απλά μιας και ανέφερες το Lazarus ("[..]όπου αυτά τα πράγματα γίνονται σχετικά εύκολα[..]") είπα να δώσω μερικά hint από την ανάπτυξη του προγράμματος σε C++ Builder επειδή ομοιάζει με το Lazarus, για αυτό ανέφερα τον αριθμό των γραμμών που μου πήρε η υλοποίηση του κλπ, κουβέντα να γίνεται .. :)
Δημοσ.

Πάντως αντί για πολλά GUI, προσωπικά θα προτιμούσα ένα με ποικιλόμορφα skins (όχι ότι με χαλάει όμως αν γίνουν πολλά GUI :) )

  • Like 1
Δημοσ.

Γιατί όχι πολλά gui με ποικιλλόμορφα skins το καθένα;;; :lol:

Παιδιά, αν παρασύρομαι να μου το πείτε, έτσι; Μην ντρέπεστε!

 

Πέρα από την πλάκα, συνεχίζω να μην έχω κοιτάξει επαρκώς τον κώδικα, αλλά παρατήρησα ότι υπάρχει πχ το tui.h και το tui.c.

 

Θεωρώ ότι θα πρέπει να υπάρχει ένα ui.h, αρκετά generic για να περιέχει τις δομές και functions που η engine περιμένει από το εκάστοτε ui να υλοποιήσει. Από κεί κι έπειτα, θα υλοποιούνται uis, κατά προτίμηση σε ξεχωριστά subdirectories το καθένα, γράφοντας μόνο το αντίστοιχο *ui.c (και το υπάρχον tui.c θα πρέπει να αποκτήσει το δικό του subdirectory).

 

Με τα κατάλληλα targets στο makefile, θα μπορεί να επιλέγεται κάθε φορά το επιθυμητό (g)ui.

Δημοσ.

Τι εννοείς δεν χρειάζεται;

Μμ δεν ειχε παιξει τα άλλα modes στα οποία δεν χωράει border. Ισως αν "εβαφες" απλά το tile με το νούμερο στα νέα tiles. Ή αν είχαν καποιο delay στο spawn, μερικα ms μετά την κίνηση του χρήστη.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...