ANSI C: Target Points (απλό gambling, board game)

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

ANSI C: Target Points (απλό gambling, board game)

Δημοσίευσηαπό migf1 » 15 Ιούλ 2011, 15:18

Ένα απλό τυχερό παιχνίδι σε ANSI C, στο οποίο προσπαθείτε να συγκεντρώσετε περισσότερους πόντους από όσους σας βάζει στόχο το παιχνίδι όταν ξεκινάει, σε λιγότερες από τις κινήσεις που επίσης σας βάζει το παιχνίδι.

Τον κώδικα μπορείτε να τον δείτε και να τον κατεβάσετε από εδώ:
(λογικά γίνεται compile σε οποιονδήποτε c-compiler υποστηρίζει την αναθεώρηση C99, δεν περιέχει τίποτα το "περίεργο").

Το παιχνίδι αποτελείται από ένα πλέγμα 49 κελιών (7χ7) με το καθένα από αυτά να περιέχει από 0 έως 48 πόντους σε τυχαία σειρά (μπορεί περισσότερα του ενός κελιού να περιέχουν ίδιους πόντους). Το μισό του αθροίσματος όλων των πόντων στα κελιά είναι οι πόντοι που πρέπει να συγκεντρώσετε. Ο μέγιστος αριθμός κινήσεων που έχετε στη διάθεσή σας είναι το πλήθος των κελιών / 2 (δηλαδή 24 για πλέγμα 7χ7).

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

Εκτός από θέσεις κελιών, μπορείτε να πληκτρολογήσετε και 3 εντολές: h (help), t (show stats), x (έξοδος) EDIT V1.5: s (save game), l (load game) EDIT V1.6: r (reset game) EDIT V1.7: i (show high-scores)

Το παιχνίδι τελειώνει είτε όταν πληκτρολογήστε x (δεν παίρνετε σκορ), είτε όταν σας τελειώσουν οι κινήσεις χωρίς να έχετε συγκεντρώσει τους απαιτούμενους πόντους (πάλι δεν παίρνετε σκορ) είτε όταν συγκεντρώσετε τους απαιτούμενους πόντους. Αυτή η τελευταία είναι η μόνη περίπτωση κατά την οποία βαθμολογήστε. Το πλήθος των κινήσεων που σας είχαν απομείνει + 1 πολλαπλασιάζονται με τους έξτρα πόντους που συγκεντρώσατε πάνω από τους απαιτούμενους + 1 EDIT V1.7: κι όλο μαζί πολλαπλασιάζεται με το γινόμενο γραμμές * στήλες του πλέγματος.

Για παράδειγμα, αν σε πλέγμα 7x7 πρέπει να συγκεντρώσετε 500 πόντους σε 24 κινήσεις κι εσείς συγκεντρώσετε 530 σε 20 κινήσεις, το σκορ σας υπολογίζετε ως εξής:

Κώδικας: Επιλογή όλων
(24-20 + 1) * (530 - 500 + 1) * 49 = 5 * 31 * 49 = 7695

Θέλω να του προσθέσω ακόμα τη δυνατότητα να αποθηκεύει high-scores EDIT: έγινε στην έκδοση 1.7 καθώς και τη δυνατότητα αποθήκευσης παιχνιδιού και φορτώματος αποθηκευμένου παιχνιδιού. Έχω κάνει ήδη μια αρχική πρόβλεψη για αυτό το τελευταίο, βάζοντας όλες τις βασικές μεταβλητές μέσα σε μια μεταβλητή: game που είναι τύπου structure : GameStatus. Οπότε η μεταβλητή: game αναπαριστάνει ανά πάσα στιγμή την τρέχουσα κατάσταση του παιχνιδιού. Σώζοντας τις τιμές της σε ένα αρχείο όταν ο χρήστης πληκτρολογήσει εντολή αποθήκευσης είναι το μόνο που χρειάζεται για να αποθηκευτεί το παιχνίδι στον σκληρό δίσκο. Για το φόρτωμα ενός αποθηκευμένου παιχνιδιού χρειάζονται περισσότερες αλλαγές στη δομή του προγράμματος. EDIT: έγινε στην έκδοση 1.5.

Ορίστε και μερικές οθόνες από το παιχνίδι: 1, 2, 3, 4 (Έκδοση 1.0)

ΥΓ. Αλγοριθμικά το παιχνίδι δεν παρουσιάζει κανένα ενδιαφέρον, όλα είναι τελείως straight-forward, ίσως όμως χρησιμεύει σαν κώδικας σε όσους κάνουν τα πρώτα τους βήματα στη C. Όλα τα σχόλια καθώς και τα κείμενα του παιχνιδιού είναι στα Αγγλικά.
Τελευταία επεξεργασία από migf1 και 16 Ιούλ 2011, 23:26, έχει επεξεργασθεί 2 φορά/ες συνολικά
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: ANSI C: Target Points (απλό gambling, board game)

Δημοσίευσηαπό migf1 » 15 Ιούλ 2011, 20:27

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

ΥΓ. Οπότε μένει να μπει και δυνατότητα high-scores τώρα (και βλέπουμε).
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: ANSI C: Target Points (απλό gambling, board game)

Δημοσίευσηαπό migf1 » 16 Ιούλ 2011, 01:15

Έκδοση 1.6 στην αρχική δημοσίευση, η οποία προσθέτει τη δυνατότητα επανεκκίνησης του παιχνιδιού ανά πάσα στιγμή με την εντολή r (reset game) και έχει πιο "ξεχωρισμένο" το περιβάλλον εργασίας (με τα μηνύματα κειμένου, κλπ) από τον πυρήνα.
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: ANSI C: Target Points (απλό gambling, board game)

Δημοσίευσηαπό Star_Light » 16 Ιούλ 2011, 06:30

δικος σου και αυτος? Κορυφαιος!!
Γνώσεις ⇛ Linux: Βασικές ┃ Προγραμματισμός: Δέν θέλω μεροκάματο , θέλω C και κακο θάνατο! ┃ Αγγλικά: Lower
Λειτουργικό ⇛ Ubuntu 10.10 σε Dual Boot με Windows 7
Προδιαγραφές ⇛ Επεξεργαστής : Intel(R) Core(TM) i3 CPU 540 @3.07Ghz (64bit)
RAM : Kingston 2GB
HDD : Coreshare 500GB
Κάρτα Γραφικών : Intel Corporation Core Processor Integrated Graphics Controller(rev 18) (prog-if 00 [VGA controller]) [8086:0042]
Star_Light
superbTUX
superbTUX
 
Δημοσιεύσεις: 2787
Εγγραφή: 01 Μάιος 2010, 21:07
Τοποθεσία: Αθήνα
IRC: Star_Light
Εκτύπωση

Re: ANSI C: Target Points (απλό gambling, board game)

Δημοσίευσηαπό migf1 » 16 Ιούλ 2011, 23:29

Thx!

Έκδοση 1.7 με υποστήριξη high-scores, αλλά ασύμβατο saved game με τις προηγούμενες εκδόσεις (σβήστε το παλιό: targetpoints.dat). Επίσης άλλαξα τον τρόπο υπολογισμού του τελικού σκορ, δίνοντας μεγαλύτερο βάρος στο πλήθος των κελιών (χρήσιμο αν αποφασίσω αργότερα να βάλω επιλογή του χρήστη για το μέγεθος του πλέγματος).

Σύνδεσμο για τον κώδικα έβαλα στο 1ο ποστ.
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: ANSI C: Target Points (απλό gambling, board game)

Δημοσίευσηαπό pc_magas » 17 Ιούλ 2011, 17:34

Χρησιμοποιείς ncurses?
My blog|Κυπριακή Κοινότητα Ελευθέρου Λογισμικού Λογισμικού ανοικτού Κώδικα
Γνώσεις Linux:Ποτέ αρκετές|Προγραμματισμός: Php, javascript, nodejs, python, bash |Aγγλικά:Καλά
Οι υπολογιστές μου:
Spoiler: show
Ubuntu 16.04 64 bit σεIntel(R) Pentium(R) CPU G4400 @ 3.30GHz, 16Gib Ram, 500Gib Hard Disk, και κάρτα γραφικών Nvidia Geforce GT610
Lubuntu 14.04 σε Dell Inspiron mini 10(1010) intel Atom Z500 1Gb ram και gma500 (εδώθη σε άλλον)
Kubuntu 16.04 Lenovo G70 Intel i5 Nvidia Grapgics Card, Intel Graphics card (έχει 2) με Nouveau, 16Gb RAM, 126GB SSD Σκληρό Δίσκο
Άβαταρ μέλους
pc_magas
powerTUX
powerTUX
 
Δημοσιεύσεις: 2599
Εγγραφή: 12 Απρ 2009, 18:55
Τοποθεσία: Αχαρναί Αττικής
Launchpad: pc_magas
IRC: pc_magas
Εκτύπωση

Re: ANSI C: Target Points (απλό gambling, board game)

Δημοσίευσηαπό pc_magas » 17 Ιούλ 2011, 17:37

Ωραίο θέλω να μελετίσω περισσότερο τον Κώδικά του! Ίσως μπορέσω να τον κάνω και διαδικτυακό xD ;)
My blog|Κυπριακή Κοινότητα Ελευθέρου Λογισμικού Λογισμικού ανοικτού Κώδικα
Γνώσεις Linux:Ποτέ αρκετές|Προγραμματισμός: Php, javascript, nodejs, python, bash |Aγγλικά:Καλά
Οι υπολογιστές μου:
Spoiler: show
Ubuntu 16.04 64 bit σεIntel(R) Pentium(R) CPU G4400 @ 3.30GHz, 16Gib Ram, 500Gib Hard Disk, και κάρτα γραφικών Nvidia Geforce GT610
Lubuntu 14.04 σε Dell Inspiron mini 10(1010) intel Atom Z500 1Gb ram και gma500 (εδώθη σε άλλον)
Kubuntu 16.04 Lenovo G70 Intel i5 Nvidia Grapgics Card, Intel Graphics card (έχει 2) με Nouveau, 16Gb RAM, 126GB SSD Σκληρό Δίσκο
Άβαταρ μέλους
pc_magas
powerTUX
powerTUX
 
Δημοσιεύσεις: 2599
Εγγραφή: 12 Απρ 2009, 18:55
Τοποθεσία: Αχαρναί Αττικής
Launchpad: pc_magas
IRC: pc_magas
Εκτύπωση

Re: ANSI C: Target Points (απλό gambling, board game)

Δημοσίευσηαπό migf1 » 17 Ιούλ 2011, 19:52

pc_magas έγραψε:Χρησιμοποιείς ncurses?

Όχι, απλή στάνταρ C.

έγραψε:Ωραίο θέλω να μελετίσω περισσότερο τον Κώδικά του! Ίσως μπορέσω να τον κάνω και διαδικτυακό xD ;)

Thx! Θα είναι καλή φάση!

Ακόμα καλύτερη φάση θα ήταν να κάνεις κάποιος διαδικτυακή την Ξερή που έχω ποστάρει στο άλλο νήμα :)
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση


Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι