Τα πάντα για την C

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

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

Re: Τα πάντα για την C

Δημοσίευσηαπό Ilias95 » 16 Απρ 2012, 18:55

Καλησπέρα και χρόνια πολλά,

migf1 έγραψε:
Μορφοποιημένος Κώδικας: Επιλογή όλων
typedef enum ScenAniMood { SAM_SCARED = -1, SAM_NEUTRAL, SAM_AGGRESSIVE } ScenAniMood ;

/** extends AnimalType class **/
typedef struct SceneAnimal {
AnimalType type; /* general characteristics of a SceneAnimal (inhereted from AnimalType) */
int id; /* for identification in the scene */
ScenAniMood mood;
int health; /* 0 to 100 */
int dist; /* distance from player */
} SceneAnimal;

Κατόπιν η δομή της (εκάστοτε) σκηνής...
Μορφοποιημένος Κώδικας: Επιλογή όλων
typedef struct Scene {
int nanimals; /* number of animals in scene */
SceneAnimal *animals; /* will be allocated dynamically to nanimals * sizeof(SceneAnimal) */
} Scene;


Λοιπόν έχω μια απορία σχετικά με τις παραπάνω δομές.
Κάποια στιγμή κάποια απ' τα ζώα της σκηνής θα πρέπει να "αποχωρούν".
Οπότε έχω 2 τρόπους στο μυαλό μου για να γίνει αυτό.

Ο ένας είναι να αντικαταστήσουμε την "*animals;" στην "Struct Scene" με μια linked list και έτσι όποτε θέλουμε προσθέτουμε ή αφαιρούμε ζώα απ' την λίστα και όταν θέλουμε να επισκεφτούμε όλα τα ζωντανά ζώα απλά διατρέχουμε την linked list.

Η 2η σκέψη για να μην πειράξουμε την "*animals;" είναι να βάλουμε ένα νέο πεδίο (πχ. alive) στην SceneAnimal που θα έχει τύπο bool και θα δείχνει αν ένα ζώο υπάρχει ή πέθανε. Έτσι θα διατρέχουμε ολόκληρη την λίστα με τα ζώα, αλλά θα σταματάμε μόνο όπου το alive θα είναι true.

Ποια απ' τις δύο τακτικές θα ήταν "καλύτερη"; Ή υπάρχει μήπως κάποια εναλλακτική;
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό migf1 » 17 Απρ 2012, 03:27

Χρόνια πολλά σε όλους!

Είσαι ελεύθερος να το υλοποιήσεις όπως θέλεις Ηλία. Ένας άλλος τρόπος είναι να το έχεις σαν πίνακα και απλά να μαρκάρεις ως κενα τα στοιχεία των ζώων που φέυγουν από την σκηνή.

Ξεκίνησα να το κάνω κι εγώ το game, αλλά μέχρι στιγμής αντί για κυνήγι μου έχει βγει... εκπαιδευτικό :lol:

Για καθένα από τα 10 ζώα που έχω συμπεριλάβει έχω βάλει σύντομο κείμενο, φωτογραφία και βίντεο, τα οποία μπορεί να τα δει ο παίκτης μόνο αν το συγκεκριμένο ζώο είναι παρόν στην σκηνή, με την εντολή "book" (που έχει ως aliases τις "learn" και "dictionary") Μόνο που έχει φτάσει ήδη στα... 100 Mb :lol:

Προς το παρόν δουλεύουν μόνο μια 2-3 εντολές, και οι υπόλοιπες τυπώνουν την εντολή που δίνει ο χρήστης μαζί με τις παραμέτρους (μέχρι όσες δέχεται μάξιμουm η εντολή). Έχω δηλαδή τελειώσει το 1ο στάδιο του parser.

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

Για τα ζώα έχω βάλει mood (φοβισμένα, ουδέτερα, επιθετικά) καθώς και health (υγιή, ελαφρώς πληγωμένα, αδύναμα, πολύ πληγωμένα, ετοιμοθάνατα, και νεκρά) τα οποία επίσης δεν είναι λειτουργικά ακόμα. Συμπεριλαμβάνονται όμως στην περίγραφή του ζώου όταν ο χρήστης δώσει "look".

Όλα τα παραπάνω προς το παρόν παράγονται τυχαία, κατά το χτίσιμο της σκηνής. Τέλος, με την εντολή "new" δημιουργείται νέα σκηνή από την αρχή.

Αν δεν σε πειράζει Ηλία που είναι 90 Mb, μπορείς να το κατεβάσεις από εδώ: http://i.minus.com/1334707775/Kbh7Ubg5d ... auBoSI.rar και να ρίξεις μια ματιά στον κώδικα (ο οποίος βέβαια μπορεί να δομηθεί και καλύτερα, γιατί δεν αφιερωσα ιδιαίτερο χρόνο στην οργάνωσή του).

Όμως για κάθε ξεχωριστή οντότητα έχω φτιάξει ξεχωριστά header-files, με το καθένα τους να περιέχει τους ορισμούς των struct, enum και #define της συγκεκριμένης οντότητας.

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

Re: Τα πάντα για την C

Δημοσίευσηαπό Ilias95 » 17 Απρ 2012, 03:37

migf1 έγραψε:ΥΓ. Άσε, πορώθηκα κι εγώ με το game :lol:

:lol:
Στο μεταξύ έχω σκαλώσει με τα text adventures που πόσταρες.
Δεν έχω καταλάβει ακόμα πολύ πολύ τι μου γίνεται, αλλά για κάποιο περίεργο λόγο επιμένω να ξαναμπαίνω... :P

Σχετικά με τον κώδικα δεν θα δω κάτι ολοκληρωμένο μέχρι να το φτιάξω πρώτα. :)
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό migf1 » 17 Απρ 2012, 03:44

Ilias95 έγραψε:
migf1 έγραψε:ΥΓ. Άσε, πορώθηκα κι εγώ με το game :lol:

:lol:
Στο μεταξύ έχω σκαλώσει με τα text adventures που πόσταρες.
Δεν έχω καταλάβει ακόμα πολύ πολύ τι μου γίνεται, αλλά για κάποιο περίεργο λόγο επιμένω να ξαναμπαίνω... :P


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

Re: Τα πάντα για την C

Δημοσίευσηαπό migf1 » 17 Απρ 2012, 11:30

Ilias95 έγραψε:
...
Σχετικά με τον κώδικα δεν θα δω κάτι ολοκληρωμένο μέχρι να το φτιάξω πρώτα. :)

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

Re: Τα πάντα για την C

Δημοσίευσηαπό Ilias95 » 17 Απρ 2012, 13:12

migf1 έγραψε:Γενικώς να επιδιώκεις να διαβάζεις κώδικα άλλων, συχνότατα είναι πολύ πιο χρήσιμο από τα βιβλία ;)

Το ξέρω και φυσικά και το επιδιώκω.
Γι' αυτό έγραψα μέχρι να το φτιάξω πρώτα.

Θέλω να δω πρώτα αν και πως μπορώ να σκεφτώ την υλοποίηση ενός προβλήματος μόνος μου και ύστερα να δω τι σκέφτηκαν άλλοι για το ίδιο πρόβλημα.
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό migf1 » 17 Απρ 2012, 13:39

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

Re: Τα πάντα για την C

Δημοσίευσηαπό migf1 » 17 Απρ 2012, 15:49

Αν κατεβάσει κανείς αυτό που έβαλα εδώ: viewtopic.php?p=239709#p239709, μπορεί να μου πει αν ανοίγουν κανονικά τα media-files σε ubuntu, ειδικά αν έχει αλλάξει το default Unity περιβάλλον; Επειδή τα ανοίγω με "xdg-open", το οποίο ανήκει στο xdg-utilities package το οποίο δεν ξέρω αν είναι παντού διαθέσιμο από default.

Στο δικό μου (32-μπιτο 11.04 με Gnome αντί για Unity) ανοίγουν κανονικά.

Π.χ. αν μια σκηνή σας βγάλει κάποιο ας πούμε έναν λύκο, με "book wolf" σας δίνει πληροφορίες για τους λύκους κι από κάτω μπορείτε να του δώσετε P για να ανοίξει φωτογραφία ή V για να παίξει βίντεο (για ferret και wild-boar δεν υπάρχουν βίντεο, μόνο φωτό... για αυτά πρέπει να σας πει απλά πως δεν τα βρίσκει και να συνεχίσει).

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

Re: Τα πάντα για την C

Δημοσίευσηαπό Ilias95 » 17 Απρ 2012, 16:15

migf1 έγραψε:Αν κατεβάσει κανείς αυτό που έβαλα εδώ: viewtopic.php?p=239709#p239709, μπορεί να μου πει αν ανοίγουν κανονικά τα media-files σε ubuntu, ειδικά αν έχει αλλάξει το default Unity περιβάλλον; Επειδή τα ανοίγω με "xdg-open", το οποίο ανήκει στο xdg-utilities package το οποίο δεν ξέρω αν είναι παντού διαθέσιμο από default.

Στο δικό μου (32-μπιτο 11.04 με Gnome αντί για Unity) ανοίγουν κανονικά.

Π.χ. αν μια σκηνή σας βγάλει κάποιο ας πούμε έναν λύκο, με "book wolf" σας δίνει πληροφορίες για τους λύκους κι από κάτω μπορείτε να του δώσετε P για να ανοίξει φωτογραφία ή V για να παίξει βίντεο (για ferret και wild-boar δεν υπάρχουν βίντεο, μόνο φωτό... για αυτά πρέπει να σας πει απλά πως δεν τα βρίσκει και να συνεχίσει).

Btw, αν μια σκηνή περιέχει περισσότερα το ενός ίδια ζώα, σας λέει να γίνεται πιο συγκεκριμένοι αλλά δεν έχω υλοποιήσει ακόμα τον διαχωρισμό τους, οπότε αν είναι κάντε "book" σε ζώα που εμφανίζονται 1 μόνο φορά στην σκηνή.

Ναι, κανονικά ανοίγουν και οι φωτογραφίες και τα video μετά από book σε Ubuntu 11.10.
Μάλιστα όταν ξεκινάει το πρόγραμμα ανοίγει κατευθείαν ένα video με ένα ... πως ακριβώς είπαμε ότι λέγεται; :P

Edit: Όχι δεν πείραξα το unity.
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Re: Τα πάντα για την C

Δημοσίευσηαπό migf1 » 17 Απρ 2012, 17:43

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

ΠροηγούμενηΕπόμενο

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

cron