Paroysiasi peiramatiko gel_pamak
-
Upload
teacherbot12 -
Category
Education
-
view
75 -
download
0
Transcript of Paroysiasi peiramatiko gel_pamak
Πρότυπο Πειραματικό ΓΕΛΠανεπιστημίου Μακεδονίας
Γνωρίζουμε την Python με κατασκευήΑπλών Διαδραστικών
Παιχνιδιών στο Διαδύκτιο
Σχολ. Έτος 2013-14
Βασίλης Αποστολούδας, Α1Ολγα Αποστολούδα, Α1Αναστασία Σερζή, Α2Βάγια Φατζηαναστασίου, Α2 Νικηφόρος Υασφαλής, Α2Βασίλης Κοχλιαρίδης, Β1Κωνσταντίνος Αλεξίου, Β1Αναστάσιος Υωτιάδης, Β2
Δθμιουργικθκε από τον Ολλανδό Γκουίντο βαν Ρόςςουμ (Guido van Rossum) το 1990
Βαςικόσ άξονάσ τθσ είναι θ αναγνωςιμότθτα του κϊδικά τθσ, και θ ευκολία χριςθσ τθσ
Ζχει πολλζσ βιβλιοκικεσ που διευκολφνουν ιδιαίτερα αρκετζσ ςυνθκιςμζνεσ εργαςίεσ και ςυμβάλουν ςτθν ταχφτθτα τθσ εκμάκθςισ τθσ
Σο όνομα τθσ γλϊςςασ προζρχεται από τθν ομάδα άγγλων κωμικϊν Μόντυ Πάικον
Η Python αναπτφςςεται ωσ ανοιχτό λογιςμικό (open source)
. . . είναι μια γλώσσα προγραμματισμού, που . . .
Η Python προτείνεται ως μια πολύ καλή σύγχρονη γλώσσα με στοιχεία Διαδικτύου για μαθητές
Γυμνασίου και Λυκείου, που αρχίζουν να μαθαίνουν προγραμματισμό Η/Τ
Φαρακτηριστικά που την κάνουν ελκυστική . . .
Python
Οδθγοφμενθ
από Γεγονόσ
(event driven)
Απλι και κατανοθτι
Αντικειμενοςτραφισ
Δωρεάν
(ΕΛΑΚ)Αποκθκεφεται ςτο
ςφννεφο και εκτελείται ςτο φυλλομετρθτι του Η/Τ θ
άλλων ζξυπνων ςυςκευϊν
Μαηί με τθν Java και τθν Php, κεωροφνται οι γλϊςςεσ τθσ
επόμενθσ δεκαετίασ
Python C++
Print “Γεια σου κόσμε !’’
#include <iostream>
using namespace std;
void main()
{
cout << " Γεια σου κόσμε " << endl;
return 0 }
Σο πρόγραμμα «Γεια σου κόσμε !»σε Python και C++
Python Java
Print “Γεια σου κόσμε !’’
class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!"); //
Display the string.
}
}
Σο πρόγραμμα «Γεια σου κόσμε !»σε Python και Java
…γλώσσα οδηγούμενη από γεγονός
• Youtube• DropBox• Google (Με μεγάλθ χριςθ τθσ, ςε βαςικζσ εφαρμογζσ)• Quora• Instagram• BitTorrent (Earlier Version)• Second Life• Reddit
Γνωστές εμπορικές εφαρμογές γραμμένες σε Python
…τα παιχνίδια μας σε Python
Παιχνίδι 1 : Μάντεψε τον αριθμό
περιγραφή : Ο υπολογιστής βάζει στο μυαλό του ένα τυχαίο αριθμό (στόχο), από το 1 – 100 ή από το 1 – 1000. Ο παίκτης πρέπεινα τον βρει με 7 ή 10 προσπάθειες αντίστοιχα
Σι μάθαμε: _ Ότι με δυαδική αναζήτηση αρκούν ν απόπειρες για να βρεθείο αριθμός – στόχος(όπου ν είναι 2ν >= Πάνω_Αριθμός – Κάτω_Αριθμός + 1
1 100
τόχοσ Η/Τ65
50
Πρόταςθ Παίκτθ
Απάντθςθ Η/Τ : « ΕΙΑΙ ΧΑΜΗΛΟΣΕΡΑ »
1 100
65
50
75
Πρόταςθ Παίκτθ
Απάντθςθ Η/Τ : « ΕΙΑΙ ΨΗΛΟΣΕΡΑ»
Ο παίκτθσ τϊρα επιλζγει αρικμό από το 50 - 100
Σρόπος που παίζεται :
Παιχνίδι 2 : Ρακέτες
Περιγραφή : παίζεται με δύο παίκτες, οι οποίοι προσπαθούν να αποκρούσουν την μπάλα. Μετά από κάθε χτύπημα με ρακέτα η ταχύτητα της μπάλας αυξάνεται κατά 10 %
Q ΕπάνωS Κάτω
ΕπάνωΚάτω
Σι μάθαμε: _ Οι συντεταγμένες της μπάλας και των ρακετών πρέπει να
ελέγχονται συνέχεια
_ Όταν η μπάλα ακουμπήσει τα όρια της οθόνης αλλάζει το πρόσημο της κίνησής της, και γυρίζει πίσω παραμένοντας μέσα στην οθόνη
_ Εξοικείωση με το σύστημα συντεταγμένων της επιφάνειαςγραφικών ( καμβάς )
Περιγραφή : Παίζεται από ένα παίκτη, ο οποίος πρέπει να βρει δύο ίδιες κάρτες.Ανάλογα με τον βαθμό δυσκολίας τα ζευγάρια μπορεί να είναι 9 η 18.
Παιχνίδι 2 : Tandem
Σι μάθαμε: _ Εισαγωγή εικόνων από αποθηκευτικά μέσα στο σύννεφο
(Dropbox)
_ Πως διαχειρίζεται η Python τα γραφικά ( Εικόνες κλπ)
_ τοιχεία από την αρχαία ιστορία, μιας και οι κάρτες απεικονίζουν στολές και όπλα των στρατιωτών του Μ. Αλεξάνδρου
Παιχνίδι 3 : Σαΐστε το ποντίκι
Περιγραφή : Παίζεται με ένα παίκτη, ο οποίος προσπαθεί να ταΐσει ένα ποντικό με διάφορα είδη τυριών. Απαγορεύεται να βγει έξω από την εσωτερική περιοχή, και αν το κάνει χάνει μια από τις 6 ζωές του.
Σι μάθαμε: _ Να χρησιμοποιούμε γραφικά με κίνηση (animated graphics)
_ Να διαχειριζόμαστε το σύστημα συντεταγμένων του γραφικού περιβάλλοντος
_ Σην μέθοδο Ray Casting
Για τα γραφικά του ποντικοφ βρικαμε διαδοχικζσ εικόνεσ κίνθςθσ ποντικοφ (sprites).
Ray castingΟ όροσ χρθςιμοποιικθκε πρϊτα, από τον Scott Roth το 1982
Ζνα ςθμείο είναι μζςα ςε πολφγωνο αν το πλικοσ των ςθμείων τομισ τθσ θμιευκείασπου αρχίηει από το ςθμείο και τζμνει το πολφγωνο είναι μονόσ. Αν το ςθμείο είναι ζξω, τότε ο αρικμόσ είναι ηυγόσ. Ζτςι μπορζςαμε να ελζγξουμε ςε κάκε κίνθςθ του ποντικοφ, αν είναι μζςα ςτο πολφγωνο.
Παιχνίδι 4 : Ιστορικές Γνώσεις για την εκστρατεία του Μ. Αλεξάνδρου
Περιγραφή : Εδώ ο παίκτης πρέπει να βρει τις βασικές μάχες που πήρε μέρος ο Μ. Αλέξανδρος, τις πολιορκίες που έκανε, καθώς και τις
Αλεξάνδρειες που ίδρυσε.
Σι μάθαμε: _ Να χρησιμοποιούμε τις αρχές του αντικειμενοστραφούς
προγραμματισμού
_ Να διαχειριζόμαστε το σύστημα συντεταγμένων του γραφικού περιβάλλοντος
_ Πληροφορίες για την εκστρατεία του Μ. Αλεξάνδρου
Παιχνίδι 5 : Προσομοίωση Κίνησης Μορίων του αέρα
Περιγραφή : το παράδειγμα αυτό θελήσαμε να προσομοιώσουμε την κίνηση των μορίων του αέρα, σε δοχείο σταθερού όγκου, και σταθερής
θερμοκρασίας.
import simplegui,randomwidth = 800height = 600balls = []no_of_balls = 200colors =['Aqua','Black','Blue','Fuchsia','Gray','Green','Lime',
'Maroon','Navy','Olive','Orange','Purple','Red','Silver','Teal','White','Yellow']
class Ball:def __init__ (self,pos,radius,colorl,colorm,vimax,vimay):
self.radius = radiusself.colorl = colorlself.colorm = colormself.pos = posself.vimax = vimaxself.vimay = vimay
def draw(self, canvas):canvas.draw_circle(self.pos, self.radius, 1,
self.colorl, self.colorm)def update(self):
if self.pos[0] > width:self.vimax = self.vimax * -1
if self.pos[0] < 0:self.vimax = self.vimax * -1
if self.pos[1] > height:self.vimay = self.vimay * -1
if self.pos[1] < 0:self.vimay = self.vimay * -1
self.pos[0] += self.vimaxself.pos[1] += self.vimay
def init():for i in range(no_of_balls):
p=[random.randrange(1,width),random.randrange(1,height)]
rad = random.randint(1,20)col_l = random.choice(colors)col_m = random.choice(colors)direction_x=random.choice([-1,1])direction_y=random.choice([-1,1])balls.append(Ball(p, rad, col_l, col_m,
random.randint(1,15)*direction_x,random.randint(1,15)*direction_y))
# Handler to draw on canvasdef draw(canvas):
for balla in balls:balla.update()balla.draw(canvas)
# Create a frame and assign callbacks to event handlersframe = simplegui.create_frame("Home", width, height)frame.set_draw_handler(draw)
init()# Start the frame animationframe.start()
Με εκτενι χριςθ τθσ ςυνάρτθςθσ RANDOΜ
Ζγινε χριςθ τθσ αντικειμενοςτραφοφσ δυνατότθτασ τθσ Python. τθ γκρι περιοχι μποροφμε να δοφμε τθν περιγραφι του αντικειμζνου των μπαλϊν.ε 60 μόνο γραμμζσ, μπορζςαμε να προςομοιϊςουμε ζνα φυςικό φαινόμενο.
Σι μάθαμε: _ Σην χρησιμότητα του αντικειμενοστραφούς
προγραμματισμού
_ Οπτική απεικόνιση ενός φυσικού φαινομένου
Παιχνίδι 6 : Τποβρύχιο
Περιγραφή : το παράδειγμα αυτό ο παίκτης είναι μέσα σε ένα υποβρύχιο και
προσπαθεί να τορπιλίσει περαστικά πλοία.
Σι μάθαμε: _ Σην χρησιμότητα του αντικειμενοστραφούς
προγραμματισμού
_ Αυξημένη χρήση του προγραμματισμού οδηγούμενου από γεγονός
( Σαυτόχρονη χρήση 4 χρονομέτρων, που ελέγχουν την κίνηση των κυμάτων, του πλοίου και των τορπιλών. Επίσης ταυτόχρονη λειτουργία γραφικών και πλήκτρων ελέγχου)
Σα τελειωμζνα παιχνίδια ενδιάμεςεσ αςκιςεισ και βοθκθτικά προγράμματα που γράψαμε για εξάςκθςθ, τα τοποκετιςαμε ςε ζνα Wiki, το οποίο είναι ζνα ομαδοςυνεργατικό
περιβάλλον, όπου επικοινωνοφςαμε μεταξφ μασ, και ανεβάηαμε τα προγράμματά μασ.
Για να μπορζςει να παίξει ο παίκτθσ το παιχνίδι του Μ. Αλεξάνδρου,δθμιουργιςαμε ζνα Prezi, για να εμπλουτίςει τισ ιςτορικζσ του γνϊςεισ .
Η εναςχόλθςι μασ με τθν Python, ιταν ωφζλιμθ αλλά και διαςκεδαςτικι. υγκεκριμζνα :
• Γνωρίςαμε τον προγραμματιςμό οδθγοφμενο από γεγονόσ
• Καταλάβαμε τι είναι και πωσ λειτουργεί ο Αντικειμενοςτραφισ Προγραμματιςμόσ
• Εξοικειωκικαμε με τθν χριςθ των γραφικϊν ςτον υπολογιςτι και το ςφςτθμα ςυντεταγμζνων των εικονοςτοιχείων (pixel)
• Αξιοποιιςαμε τισ γνϊςεισ μασ από τθν Άλγεβρα, Σριγωνομετρία, Φυςικι και Ιςτορία
• Χρθςιμοποιιςαμε αποκθκευτικά μζςα ςτο ςφννεφο όπωσ το DropBox, επειδι για όλεσ τισ εικόνεσ που χρθςιμοποιιςαμε, παίρναμε απλά το Dropbox Link τουσ
• Αξιοποιιςαμε εργαλεία Web 2.0