Warning Μεγάλο Post..
Fairy wrote:Για παράδειγμα είμαι σίγουρη πως υπάρχει κάτι ανάλογο στη C++ μιας και χρησιμοποιούμε πλέον τα Windows νυχθημερόν, αλλά δεν έχω καταφέρει προς το παρόν να βρω κάποιο manual για αρχαρίους (με Java τα πάω αρκετά καλά). Έχετε κάτι υπόψιν σας;
σε κάποιο άλλο topic ... Sudoku με FreePascal
Το GUI που είδες Fairy το έχω ξεκινήσει στην 3η λυκείου σαν Project..
(Ελεϊνό όταν το πρωτοξεκίνησα , αλλά βελτιώνεται)
Γενικότερα τα προγράμματα τα οποία είναι User-Oriented τα γράφω σε FreePascal (Delphi compatible , open source).
Γιατί ?
Απλούστατο συντακτικό..
Εύκολη συντήρηση..
Βέβαια θα μου πείς στην σχολή δεν έχουμε κάνει FreePascal..?
Θα απαντήσω κακώς , και τι πάει να πεί αυτό..
Άλλη κοινή ερώτηση .. Pascal , αυτή δεν είναι παλιά γλώσσα που παίζει μόνο σε dosbased κονσόλα..?
Ναι , πολλοί την μπερδεύουν με την Turbo Pascal της Borland , δεν έχει όμως καμμία μα καμμία σχέση εκτός του οτι οι εντολές είναι "Pascal"..
Και ωραία γιατί να την χρησιμοποιήσεις ? Αφού αυτά που φτιάχνεις παίζουν μόνο σε Windows.. Λάθος.. υποστηρίζονται Linux, FreeBSD, Mac OS X/Darwin, Mac OS classic, DOS, Win32, OS/2, Netware (libc and classic) , MorphOS.
Τώρα σχετικά με την πολυπλοκότητα του όλου πράγματος..
Τα Apps μου βασίζονται σε 3 βιβλιοθήκες η μία αναλαμβάνει το drawing στην οθόνη και ουσιαστικά κάνει register το παράθυρο μπορεί να ζωγραφίζει γραμμές , pixels , primitives γενικότερα.. Οπότε αφού το έγραψα αυτό δεν χρειάζεται άλλη μια γραμμή για Win32..
Τώρα πάνω σε αυτήν υπάρχει ένα άλλο "Unit/Βιβλιοθήκη" που αναλαμβάνει κωδικοποίηση αποκωδικοποίηση BMP , JPG , ICO , CUR , APS αρχείων..
Τώρα πάνω στα 2 παραπάνω υπάρχει το GUI το οποίο τελικά είναι κάπως απομακρυσμένο από τα Windows.. Θεωρητικά δηλαδή αν έκανα port την βιβλιοθήκη των γραφικών θα έπαιζε κατευθείαν σε οποιαδήποτε πλατφόρμα..
Σαν GUI η αρχιτεκτονική του είναι οτι τα πάντα στην οθόνη είναι objects τα οποία προσθέτουμε.. Επίσης παρ`όλα αυτά είναι procedural και όχι object oriented το μοντέλο του..
Στόχοι του ήταν και είναι..
Να υποστηρίζει Ελληνικά ακόμα και αν δεν τα υποστηρίζει ο υπολογιστής

Να είναι γρήγορο.. (worst test case P75MHz 16MB RAM , Win98)
Nα είναι όμορφο και skinable..
Να είναι προγραμματιστικά "εύκολο" (παρ`ότι φτιάχνω Visual μέθοδο για να βγάζει τον κώδικα , όλα τα μέχρι τώρα προγραμματάκια είναι γραμμένα σε καθαρό κώδικα,καμμία εποπτική μέθοδος)
Να έχει features όπως γρήγορη πληκτρολόγηση , ορθογραφικό έλεγχο και άλλα automatations τα οποία όμως είναι σε δοκιμαστική κατάσταση και γι`αυτό απενεργοποιημένα..
Γενικότερα το ποιό σημαντικό , να μπορώ να κάνω ότι μου καπνίσει με αυτό..
Fairy wrote:Και τέλος, τι άλλες γλώσσες έχουν ανάλογες δυνατότητες;
Με όλες τις γλώσσες που προσφέρουν κάποια δίοδο στο Win32API μπορείς θεωρητικά να φτιάξεις το δικό σου GUI..
Συγκεκριμένα για την FreePascal και την δικιά μου εμπειρία πάντως να σου πώ οτι documentation υπάρχει κυρίως για C++ άντε σε κάποιες περιπτώσεις και για Delphi.. Οπότε υπάρχει το θέμα της μετάφρασης , το οποίο όμως και συνήθίζεται..
Fairy wrote:Θέλω να ψηθώ λίγο προγραμματιστικά.
Ειλικρινά πιστεύω πως θα σε ενδιαφέρει τότε γιατί μαθαίνεις άπειρα πράματα για τα οποία δεν ενδιαφέρεται κανείς , γιατί τα παίρνουν έτοιμα.. Η γνώση όμως είναι δύναμη..
Μαθαίνεις πως δουλεύει από πιο μέσα το πράμα.. Και μπορείς να το βελτιώσεις αναλόγως
Τέλος σχετικά με τον κώδικα να σου δώσω ένα αποσπασματάκι σχετικά με το πως είναι οργανωμένος και τι κάνει..
Επίσης δεν χρειάζεται γνώση Win32API ούτε επαναλαμβάνονται πράματα..
Το αντίθετο θα έλεγα
ammarGUI code wrote:
InitGraph('Hello World',640,480,0); // Ανοίγει το παράθυρο για γραφικά σε μέγεθος 640x480
loadskin(''); //Φορτώνει το skin
include_object('backwindow','window','ASudoku '+version,'','','',1,1,640,480); // Φτιάχνει ένα Window που λέει πάνω ASudoku version τάδε.. και που πιάνει από το 1,1 έως το 640,480
include_object('this_level','comment','Playing Game '+playing_game,'','','',50,50,0,0); // Βάζει ένα κειμενάκι που λέει Playing game τάδε στην θέση 50,50
include_object('exit','buttonc','Exit ASudoku','','','',X1(last_object),GetMaxY-100,0,0); // Φτιάχνει ένα κουμπί με συντεταγμένη x την θέση που ξεκινάει το τελευταίο object που προστέθηκε
για να είναι ευθυγραμμισμένα και Y 100 pixels πριν το τέλος του παραθύρου..
draw_all; //Ζωγραφίζει αυτά που φτιάξαμε..
repeat
interact; // Επεξεργαζόμαστε το input του user
// κώδικας controls κτλ εδώ
until GUI_Exit; // μέχρι ο user να κλείσει το παράθυρο ή να πατήσει Exit
CloseGraph;// Κλείνει το Graph