Δημοσιεύτηκε: 03 Ιαν 2012, 16:13
Star_Light έγραψε:migf1 φοβερο!!!!! Ειδικα τα γραφικα στην τριλιζα.... σε C το έγραψες επειδη καπου ειδα οτι λες για OOP χρησιμοποιησες και C++ καθολου?
αν και νομιζω η βιβλιοθηκη για τα γραφικα μαλλον σε C++ θα ειναι γιατι η C δεν μπορει να "σηκωσει" γραφικο περιβαλλον.
Παρολαυτά φαινεται τρομερό
Ευχαριστώ!
Καθαρή C, τίποτε άλλο (αφού έχουμε πως με C μπορείς να κάνεις τα πάντα, άλλα πιο εύκολα, άλλα πιο δύσκολα
Το GTK+ είναι γραμμένο αποκλειστικά σε C και είναι καθαρά Object Oriented framework, βασισμένο πάνω στο GObject της glib.
OOP είναι και το abstraction του κώδικα που έγραψα, η προσέγγιση δηλαδή στην επίλυση του ζητούμενου. Κατά βαση, ως φιλοσοφία δηλαδή, τα περιβάλλοντα Game, Gui, GamePlay είναι abstract objects, παρόλο που δεν κάθισα να υλοποιήσω abstract constructors/deconstructors, public & private μεθόδους (member functions) κλπ για το καθένα τους... γιατί δεν είχε και πολύ νόημα σε αυτό το μικρούλι πρόγραμμα.
Μπορείς για παράδειγμα να φτιάξεις κάτι τέτοιο σε ξεχωριστό source module, π.χ. animal.h (σε spoiler)...
Spoiler: show
και κατόπιν στο source module της main() να γράφεις OO κώδικα όπως ο παρακάτω...
- Κώδικας: Επιλογή όλων
#include "animal.h"
...
int main( void )
{
Animal *dog = newAnimal();
Animal *cat = newAnimal();
dog.SetType( dog, MAMAL);
dog.SetAge( dog, 2 );
...
printf("the cat is %d years old\n", cat.GetAge(cat) );
printf("the dog is of type %d\n", dog.GetType(dog) );
...
freeAnimal( dog );
freeAnimal( cat );
return 0;
}
Στον κώδικα της τρίλιζας εγώ δεν ασχολήθηκα με ξεχωριστές υλοποιήσεις κλάσεων κλπ, απλώς μπορείς να θεωρήσεις πως τα Game, GamePlay, Gui είναι abstract objects (θα μπορούσαν να θεωρηθούν και κλάσεις αν το είχα έτσι ώστε να "γεννούν" objects). Πάντως κι έτσι όπως τον έχω τον κώδικα, μπορεί κάλλιστα να το θεωρήσει κανείς overkill (εξού και το όνομά του,
Για την εικόνα τώρα, απλά την πήρα από την Wikipedia: http://nrm.wikipedia.org/wiki/File:Jogo ... ac_toe.png, τις αφαίρεσα ότι δεν ήθελα (αν δείτε στις ενώσεις του πλέγματος φαίνεται πως εκεί υπήρχε γραμμή στην αριστερή διαγώνιο) και την έσπασα σε κομμάτια, που τα χρησιμοποιώ στο παιχνίδι. Αυτά τα κομμάτια είναι απλές .png εικόνες, και βρίσκονται μέσα στον φάκελο /gui του παιχνιδιού.
ΥΓ. Τελικά το δοκίμασε κανείς σε Linux να μου πει αν είναι όλα OK;