Paroysiasi peiramatiko gel_pamak

31
Πρότυπο Πειραματικό ΓΕΛ Πανεπιστημίου Μακεδονίας Γνωρίζουμε την Python με κατασκευή Απλών Διαδραστικών Παιχνιδιών στο Διαδύκτιο Σχολ. Έτος 2013-14 Βασίλης Αποστολούδας, Α1 Ολγα Αποστολούδα, Α1 Αναστασία Σερζή, Α2 Βάγια Φατζηαναστασίου, Α2 Νικηφόρος Υασφαλής, Α2 Βασίλης Κοχλιαρίδης, Β1 Κωνσταντίνος Αλεξίου, Β1 Αναστάσιος Υωτιάδης, Β2

Transcript of Paroysiasi peiramatiko gel_pamak

Page 1: Paroysiasi peiramatiko gel_pamak

Πρότυπο Πειραματικό ΓΕΛΠανεπιστημίου Μακεδονίας

Γνωρίζουμε την Python με κατασκευήΑπλών Διαδραστικών

Παιχνιδιών στο Διαδύκτιο

Σχολ. Έτος 2013-14

Βασίλης Αποστολούδας, Α1Ολγα Αποστολούδα, Α1Αναστασία Σερζή, Α2Βάγια Φατζηαναστασίου, Α2 Νικηφόρος Υασφαλής, Α2Βασίλης Κοχλιαρίδης, Β1Κωνσταντίνος Αλεξίου, Β1Αναστάσιος Υωτιάδης, Β2

Page 2: Paroysiasi peiramatiko gel_pamak

Δθμιουργικθκε από τον Ολλανδό Γκουίντο βαν Ρόςςουμ (Guido van Rossum) το 1990

Βαςικόσ άξονάσ τθσ είναι θ αναγνωςιμότθτα του κϊδικά τθσ, και θ ευκολία χριςθσ τθσ

Ζχει πολλζσ βιβλιοκικεσ που διευκολφνουν ιδιαίτερα αρκετζσ ςυνθκιςμζνεσ εργαςίεσ και ςυμβάλουν ςτθν ταχφτθτα τθσ εκμάκθςισ τθσ

Σο όνομα τθσ γλϊςςασ προζρχεται από τθν ομάδα άγγλων κωμικϊν Μόντυ Πάικον

Η Python αναπτφςςεται ωσ ανοιχτό λογιςμικό (open source)

. . . είναι μια γλώσσα προγραμματισμού, που . . .

Page 3: Paroysiasi peiramatiko gel_pamak

Η Python προτείνεται ως μια πολύ καλή σύγχρονη γλώσσα με στοιχεία Διαδικτύου για μαθητές

Γυμνασίου και Λυκείου, που αρχίζουν να μαθαίνουν προγραμματισμό Η/Τ

Page 4: Paroysiasi peiramatiko gel_pamak

Φαρακτηριστικά που την κάνουν ελκυστική . . .

Python

Οδθγοφμενθ

από Γεγονόσ

(event driven)

Απλι και κατανοθτι

Αντικειμενοςτραφισ

Δωρεάν

(ΕΛΑΚ)Αποκθκεφεται ςτο

ςφννεφο και εκτελείται ςτο φυλλομετρθτι του Η/Τ θ

άλλων ζξυπνων ςυςκευϊν

Μαηί με τθν Java και τθν Php, κεωροφνται οι γλϊςςεσ τθσ

επόμενθσ δεκαετίασ

Page 5: Paroysiasi peiramatiko gel_pamak

Python C++

Print “Γεια σου κόσμε !’’

#include <iostream>

using namespace std;

void main()

{

cout << " Γεια σου κόσμε " << endl;

return 0 }

Σο πρόγραμμα «Γεια σου κόσμε !»σε Python και C++

Page 6: Paroysiasi peiramatiko gel_pamak

Python Java

Print “Γεια σου κόσμε !’’

class HelloWorldApp {

public static void main(String[] args) {

System.out.println("Hello World!"); //

Display the string.

}

}

Σο πρόγραμμα «Γεια σου κόσμε !»σε Python και Java

Page 7: Paroysiasi peiramatiko gel_pamak

…γλώσσα οδηγούμενη από γεγονός

Page 8: Paroysiasi peiramatiko gel_pamak

• Youtube• DropBox• Google (Με μεγάλθ χριςθ τθσ, ςε βαςικζσ εφαρμογζσ)• Quora• Instagram• BitTorrent (Earlier Version)• Second Life• Reddit

Γνωστές εμπορικές εφαρμογές γραμμένες σε Python

Page 9: Paroysiasi peiramatiko gel_pamak

…τα παιχνίδια μας σε Python

Page 10: Paroysiasi peiramatiko gel_pamak

Παιχνίδι 1 : Μάντεψε τον αριθμό

περιγραφή : Ο υπολογιστής βάζει στο μυαλό του ένα τυχαίο αριθμό (στόχο), από το 1 – 100 ή από το 1 – 1000. Ο παίκτης πρέπεινα τον βρει με 7 ή 10 προσπάθειες αντίστοιχα

Σι μάθαμε: _ Ότι με δυαδική αναζήτηση αρκούν ν απόπειρες για να βρεθείο αριθμός – στόχος(όπου ν είναι 2ν >= Πάνω_Αριθμός – Κάτω_Αριθμός + 1

Page 11: Paroysiasi peiramatiko gel_pamak

1 100

τόχοσ Η/Τ65

50

Πρόταςθ Παίκτθ

Απάντθςθ Η/Τ : « ΕΙΑΙ ΧΑΜΗΛΟΣΕΡΑ »

1 100

65

50

75

Πρόταςθ Παίκτθ

Απάντθςθ Η/Τ : « ΕΙΑΙ ΨΗΛΟΣΕΡΑ»

Ο παίκτθσ τϊρα επιλζγει αρικμό από το 50 - 100

Σρόπος που παίζεται :

Page 12: Paroysiasi peiramatiko gel_pamak

Παιχνίδι 2 : Ρακέτες

Περιγραφή : παίζεται με δύο παίκτες, οι οποίοι προσπαθούν να αποκρούσουν την μπάλα. Μετά από κάθε χτύπημα με ρακέτα η ταχύτητα της μπάλας αυξάνεται κατά 10 %

Q ΕπάνωS Κάτω

ΕπάνωΚάτω

Page 13: Paroysiasi peiramatiko gel_pamak

Σι μάθαμε: _ Οι συντεταγμένες της μπάλας και των ρακετών πρέπει να

ελέγχονται συνέχεια

_ Όταν η μπάλα ακουμπήσει τα όρια της οθόνης αλλάζει το πρόσημο της κίνησής της, και γυρίζει πίσω παραμένοντας μέσα στην οθόνη

_ Εξοικείωση με το σύστημα συντεταγμένων της επιφάνειαςγραφικών ( καμβάς )

Page 14: Paroysiasi peiramatiko gel_pamak

Περιγραφή : Παίζεται από ένα παίκτη, ο οποίος πρέπει να βρει δύο ίδιες κάρτες.Ανάλογα με τον βαθμό δυσκολίας τα ζευγάρια μπορεί να είναι 9 η 18.

Παιχνίδι 2 : Tandem

Page 15: Paroysiasi peiramatiko gel_pamak

Σι μάθαμε: _ Εισαγωγή εικόνων από αποθηκευτικά μέσα στο σύννεφο

(Dropbox)

_ Πως διαχειρίζεται η Python τα γραφικά ( Εικόνες κλπ)

_ τοιχεία από την αρχαία ιστορία, μιας και οι κάρτες απεικονίζουν στολές και όπλα των στρατιωτών του Μ. Αλεξάνδρου

Page 16: Paroysiasi peiramatiko gel_pamak

Παιχνίδι 3 : Σαΐστε το ποντίκι

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

Page 17: Paroysiasi peiramatiko gel_pamak

Σι μάθαμε: _ Να χρησιμοποιούμε γραφικά με κίνηση (animated graphics)

_ Να διαχειριζόμαστε το σύστημα συντεταγμένων του γραφικού περιβάλλοντος

_ Σην μέθοδο Ray Casting

Για τα γραφικά του ποντικοφ βρικαμε διαδοχικζσ εικόνεσ κίνθςθσ ποντικοφ (sprites).

Page 18: Paroysiasi peiramatiko gel_pamak

Ray castingΟ όροσ χρθςιμοποιικθκε πρϊτα, από τον Scott Roth το 1982

Ζνα ςθμείο είναι μζςα ςε πολφγωνο αν το πλικοσ των ςθμείων τομισ τθσ θμιευκείασπου αρχίηει από το ςθμείο και τζμνει το πολφγωνο είναι μονόσ. Αν το ςθμείο είναι ζξω, τότε ο αρικμόσ είναι ηυγόσ. Ζτςι μπορζςαμε να ελζγξουμε ςε κάκε κίνθςθ του ποντικοφ, αν είναι μζςα ςτο πολφγωνο.

Page 19: Paroysiasi peiramatiko gel_pamak

Παιχνίδι 4 : Ιστορικές Γνώσεις για την εκστρατεία του Μ. Αλεξάνδρου

Περιγραφή : Εδώ ο παίκτης πρέπει να βρει τις βασικές μάχες που πήρε μέρος ο Μ. Αλέξανδρος, τις πολιορκίες που έκανε, καθώς και τις

Αλεξάνδρειες που ίδρυσε.

Page 20: Paroysiasi peiramatiko gel_pamak

Σι μάθαμε: _ Να χρησιμοποιούμε τις αρχές του αντικειμενοστραφούς

προγραμματισμού

_ Να διαχειριζόμαστε το σύστημα συντεταγμένων του γραφικού περιβάλλοντος

_ Πληροφορίες για την εκστρατεία του Μ. Αλεξάνδρου

Page 21: Paroysiasi peiramatiko gel_pamak

Παιχνίδι 5 : Προσομοίωση Κίνησης Μορίων του αέρα

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

θερμοκρασίας.

Page 22: Paroysiasi peiramatiko gel_pamak

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Μ

Page 23: Paroysiasi peiramatiko gel_pamak

Ζγινε χριςθ τθσ αντικειμενοςτραφοφσ δυνατότθτασ τθσ Python. τθ γκρι περιοχι μποροφμε να δοφμε τθν περιγραφι του αντικειμζνου των μπαλϊν.ε 60 μόνο γραμμζσ, μπορζςαμε να προςομοιϊςουμε ζνα φυςικό φαινόμενο.

Page 24: Paroysiasi peiramatiko gel_pamak

Σι μάθαμε: _ Σην χρησιμότητα του αντικειμενοστραφούς

προγραμματισμού

_ Οπτική απεικόνιση ενός φυσικού φαινομένου

Page 25: Paroysiasi peiramatiko gel_pamak

Παιχνίδι 6 : Τποβρύχιο

Περιγραφή : το παράδειγμα αυτό ο παίκτης είναι μέσα σε ένα υποβρύχιο και

προσπαθεί να τορπιλίσει περαστικά πλοία.

Page 26: Paroysiasi peiramatiko gel_pamak

Σι μάθαμε: _ Σην χρησιμότητα του αντικειμενοστραφούς

προγραμματισμού

_ Αυξημένη χρήση του προγραμματισμού οδηγούμενου από γεγονός

( Σαυτόχρονη χρήση 4 χρονομέτρων, που ελέγχουν την κίνηση των κυμάτων, του πλοίου και των τορπιλών. Επίσης ταυτόχρονη λειτουργία γραφικών και πλήκτρων ελέγχου)

Page 27: Paroysiasi peiramatiko gel_pamak

Σα τελειωμζνα παιχνίδια ενδιάμεςεσ αςκιςεισ και βοθκθτικά προγράμματα που γράψαμε για εξάςκθςθ, τα τοποκετιςαμε ςε ζνα Wiki, το οποίο είναι ζνα ομαδοςυνεργατικό

περιβάλλον, όπου επικοινωνοφςαμε μεταξφ μασ, και ανεβάηαμε τα προγράμματά μασ.

Page 28: Paroysiasi peiramatiko gel_pamak

Για να μπορζςει να παίξει ο παίκτθσ το παιχνίδι του Μ. Αλεξάνδρου,δθμιουργιςαμε ζνα Prezi, για να εμπλουτίςει τισ ιςτορικζσ του γνϊςεισ .

Page 29: Paroysiasi peiramatiko gel_pamak
Page 30: Paroysiasi peiramatiko gel_pamak

Η εναςχόλθςι μασ με τθν Python, ιταν ωφζλιμθ αλλά και διαςκεδαςτικι. υγκεκριμζνα :

• Γνωρίςαμε τον προγραμματιςμό οδθγοφμενο από γεγονόσ

• Καταλάβαμε τι είναι και πωσ λειτουργεί ο Αντικειμενοςτραφισ Προγραμματιςμόσ

• Εξοικειωκικαμε με τθν χριςθ των γραφικϊν ςτον υπολογιςτι και το ςφςτθμα ςυντεταγμζνων των εικονοςτοιχείων (pixel)

• Αξιοποιιςαμε τισ γνϊςεισ μασ από τθν Άλγεβρα, Σριγωνομετρία, Φυςικι και Ιςτορία

• Χρθςιμοποιιςαμε αποκθκευτικά μζςα ςτο ςφννεφο όπωσ το DropBox, επειδι για όλεσ τισ εικόνεσ που χρθςιμοποιιςαμε, παίρναμε απλά το Dropbox Link τουσ

• Αξιοποιιςαμε εργαλεία Web 2.0

Page 31: Paroysiasi peiramatiko gel_pamak