ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΡΗΤΗΣ ΣΧΟΛΗ ΕΦΑΡΜΟΣΜΕΝΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΝΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΡΗΤΗΣ ΣΧΟΛΗ ΕΦΑΡΜΟΣΜΕΝΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΝΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ"

Transcript

1 ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΚΡΗΤΗΣ ΣΧΟΛΗ ΕΦΑΡΜΟΣΜΕΝΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΗΛΕΚΤΡΟΝΙΚΩΝ ΜΗΧΑΝΙΚΩΝ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Δημιουργία δισδιάστατου βίντεο παιχνιδιού με χρηση αντικειμενοστραφούς C# στο πλαίσιο εργασίας XNA4 (2D video game development with object-oriented C# under XNA4 framework) ΟΝΟΜΑΤΕΠΩΝΥΜΟ: ΓΕΡΑΚΑΣ ΓΕΩΡΓΙΟΣ ΗΛΙΑΣ AM: 4929 ΚΑΘΗΓΗΤΗΣ: ΚΩΝΣΤΑΝΤΑΡΑΣ ΑΝΤΩΝΙΟΣ Χανιά, 20/10/2014 1

2 ΠΕΡΙΕΧΟΜΕΝΟ 1) Εξοικείωση με το πρόγραμμα Visual studio Express 2010(Σελίδα 3). 2) Σύντομη εισαγωγή στη C# (Σελίδα 8). 3) Εισαγωγη στη μηχανές παιχνιδιού (Σελίδα 10). 4) Εισαγωγή στη XNA 4.0 (Σελίδα 11). 5) Διάγραμμα ροής για το πως σχετίζονται τα αντικείμενα (Σελίδα 16). 6) Ανάλυση του κώδικα(σελίδα 17). 7) Το περιβάλλον του παιχνιδιού(σελίδα 49) 8) Στάδια βελτίωσης του παιχνιδιού(51) 9) Βιβλιογραφία(Σελίδα 55) 2

3 Εξοικειωση με το προγραμμα Visual studio Express 2010 Στο σημείο 1 που φαίνεται στην εικόνα μπορούμε να δημιουργήσουμε ένα καινούριο project, όπως θα δούμε και στην συνέχεια. [2] New project 3

4 Τα παρακατω αρχεια δημιουργουνται αυτοματα απο την ΧΝΑ οταν κανουμε βίντεο παιχνίδι για Windows ή XBOX. [2] 4

5 Στο σημείο 2 βρίσκονται όλες οι κλάσεις μας και τα αρχεία μας που έχουμε δημιουργήσει [2] Με το πλήκτρο F5 τρέχει το πρόγραμμα(debug) 5

6 Δημιουργια class[2] [1] 6

7 Εισαγωγή αρχείων γραφικών όπως το παρακάτω αρχείο (png). Kάποια απο τα αρχεία είναι στο φάκελο sprites. [2] 7

8 Σύντομη εισαγωγη στη C# [11] Η C# είναι μία ολοκληρωμένη αντικειμενοστραφής γλώσσα προγραμματισμού σχεδιασμένη για τη δημιουργία λογισμικού σε.net Framework. Τα πάντα στη C# είναι αντικείμενα Παρέχει άμεση πρόσβαση σε τεράστιες βιβλιοθήκες κλάσεων του.net Framework & ασφάλεια των τύπων της. Θα δούμε παρακάτω τη σύνταξη και τη δομή ενός απλού προγράμματος (Console Application) στη C# που εμφανίζει το μήνυμα Hello World και θα αναλύσουμε γραμμή γραμμή τα μέρη του: 1. using System; 2. namespace MyNamespace(ονομα του project) class Helloworld static void Main() Console.WriteLine("Hello World"); Console.ReadKey(); 8

9 Σε ένα C# πρόγραμμα χρησιμοποιούμε Namespaces για την οργάνωση του κώδικα μας. [11] Στο παραπάνω πρόγραμμα χρησιμοποιήσαμε την βιβλιοθήκη System (γραμμή 1 του παραδείγματος) μέσο της λέξης κλειδιού using,το οποίο περιλαμβάνει έτοιμες κλάσεις και μεθόδους του.νετ με έτοιμο επαναχρησιμοποιήσιμο κώδικα(συναρτήσεις). Ένα Namespace μπορεί να περιέχει τους εξής τύπους : Namespaces(ονομα του project) Classes(Ετικέτες για να διαχειρίζονται τα αντικείμενα) Delegates(Συναρτήσεις) Enums(Λίστες) Structs(δομές) Interfaces(Διασυνδέσεις) Για τη δημιουργία ενός δικού μας Namespace χρησιμοποιούμε τη δεσμευμένη λέξη-κλειδί namespace (γραμμή 2), έτσι η κλάση Helloworld (γραμμή 4) εμπεριέχεται στο MyNamespace που δημιουργήσαμε. Στη συνέχεια του κώδικα μπορούμε να δούμε πως μπορούμε να εμφανίσουμε στη γραμμή εντολών το μήνυμα "Hello World". Η μέθοδος Main() (γραμμή 6) περιέχει την εντολή Console.WriteLine("Hello World");,η οποία εμφανίζει το τελικό μήνυμα. Η κλάση Console ανήκει στο χώρο ονομάτων System και η WriteLine() είναι μέθοδος της Console. Εάν δεν χρησιμοποιούσαμε την εντολή using System; Η εντολή θα συντασσόταν System.Console.WriteLine("Hello Word"); Χρησιμοποιούμε την τελεία ανάμεσα από Namespaces, κλάσεις και μεθόδους για να δείξουμε τι εμπεριέχεται σε τι. Πχ. Τα σχόλια συντάσσονται χρησιμοποιώντας αυτόν τον συμβολισμό ( // ),εάν επρόκειτο για μία γραμμή σχολίου. //Αυτό είναι ένα σχόλιο 9

10 Εισαγωγη στη μηχανές παιχνιδιού[1] Μια μηχανή παιχνιδιού είναι ένα σύστημα λογισμικού σχεδιασμένο για τη δημιουργία και την ανάπτυξη βιντεο παιχνιδιών. Υπάρχουν πολλές μηχανές παιχνιδιών οι οποίες είναι σχεδιασμένες να δουλεύουν σε κονσόλες βιντεοπαιχνιδιών και λειτουργικά συστήματα επιτραπέζιων υπολογιστών όπως τα Microsoft Windows, το Linux, και το Mac OS X. Η κεντρική λειτουργικότητα που παρέχεται τυπικά από μια μηχανή παιχνιδιού περιλαμβάνει μια μηχανή φωτοαπόδοσης ("renderer") για 2D ή 3D γραφικά, μια μηχανή φυσικής ή εντοπισμού συγκρούσεων(collision detection, καθώς και collision response), ήχο, Scripting(ενα αντικείμενο οταν δέχεται ένα ερέθισμα αλλάζει την κατάστασή του), Animation(οτιδήποτε δεν ειναι ζωντανο, φανταστικο και δεν ειναι απαραιτητο να υπακουει στους νόμους της φυσικής), τεχνητή νοημοσύνη, δικτύωση, Streaming(παιχνίδι σε πραγματικό χρόνο μέσω ίντερνετ), διαχείριση μνήμης, νήματα (threading), υποστήριξη τοπικοποίησης, και ένα γράφο σκηνής (scene graph). Η διαδικασία της ανάπτυξης παιχνιδιού συχνά οικονομικοποιείται με το ότι σε μεγάλο μέρος η ίδια μηχανή παιχνιδιού επαναχρησιμοποιείται για να δημιουργηθούν διαφορετικά παιχνίδια. 10

11 Εισαγωγή στη XNA 4.0 (Χ.Ν.Α. δεν ειναι ακρώνυμα, το Χ σημαινει σε κώδικα Μορς "-..-", και το ΝΑ σημαινει "-..-") [1] Η Microsoft XNA είναι ένα σύνολο εργαλείων με ένα διαχειριζόμενο περιβάλλον εκτέλεσης που διευκολύνει τη δημιουργία βίντεο παιχνιδίων.η XNA τρέχει σε windows,windows phone, XBOX και άλλες πλατφόρμες της Microsoft διότι βασίζεται στο πλαίσιο.net της Microsoft. 11

12 Βασική δομή της ΧΝΑ 4.0: [8] Το αρχείο namespace Το όνομα του project() που περιέχει αρχικοποιήσεις, το graphics device(συσκευη γραφικων: δίνει στο παιχνίδι πρόσβαση στο υλικό του υπολογιστό).οι παρακάτω συναρτήσεις είναι απαραίτητες. Το όνομα του παιχνιδιού() Main class. Initialize() Προετοιμάζει το περιβάλλον του παιχνιδιού π.χ. ορίζει την αρχική κατάσταση των αντικειμένων. LoadContent() Φορτώνει τα αρχεία που χρειάζεται το παιχνίδι π.χ μουσική,φώτογραφιες σε μορφή (.png). Update () Εδώ γίνεται ο έλεγχος των εισόδων του χρήστη (ποντίκι, πληκτρολόγιο) που επηρεάζουν την αντίδραση των αντικειμένων. Ακόμα εδώ περιέχονται ολες οι συναρτήσεις που κάνουν τα αντικείμενα δυναμικά(να κινούνται ή οτι άλλο είναι προγραμματισμένα να κάνουν). Draw()Αυτή η συνάρτηση ειναι υπεύθυνη για την εμφάνιση των αντικειμένων στο περιβάλλον του παιχνιδιού. Αξίζει να σημειωθεί οτι η συνάρτηση Update και Draw εκτελούνται 60 φορές το δευτερόλεπτο. UnloadContent()Εκφορτώνει τους πόρους του παιχνιδιού. 12

13 Sprites(Γραφικά ή Εικονες) [8] Sprites ειναι δισδιάστατες εικόνες που ελέγχονται απο το κώδικα κατά τη διάρκεια του παιχνιδιού. Χρησιμοποιούνται για να ζωγραφιστεί το αντικείμενο στο παιχνίδι. Spritebatch είναι μια λίστα απο εικόνες(sprites). Spritefont είναι ένα αρχείο που χρησιμοποιείται για να ορίσει τον τύπο της γραμματοσειράς που θα εμφανιστεί στο παιχνίδι.το αρχείο Spritefont τοποθετείται στο 2Dgame project AContent( π.χ. στην επόμενη σελίδα τα μηνύματα που εμφανίζονται στο παιχνίδι με πράσινο χρώμα). 13

14 14

15 Διανύσματα & Διαστάσεις(Vector2,Rectangle) [8] Για φορτώσουμε εικόνες με το Spritebatch πρέπει να δημιουργηθεί ενα περιβάλλον (Τexture2D). Στην ΧΝΑ ο χώρος μπορεί να είναι δισδιάστατος ή τρισδιάστατος. Στη συγκεκριμένη εργασία είναι δισδιάστατος. mytexture = Content.Load<Texture2D>("MAO");//ΜΑΟ είναι το ονομα της φωτογραφιας του backround. Για να μπορούμε να φορτώσουμε εικόνες με το Spritebatch χρειάζεται να έχουμε δηλώσει την αρχική θέση του αντικειμένου, αυτο γίνεται με τη συνάρτηση Vector2(x,y) (2D, παίρνει δύο ορίσματα). Το μέγεθος της εικόνας ρυθμίζεται απο τη συνάρτηση Rectangle(). 15

16 ΔΙΑΓΡΑΜΜΑ ΡΟΗΣ MainFuntion.cs BrainssssKiCKer.cs Obj.cs Items.cs Enemy.cs Heli.cs ZombieSpawner.cs Bullets.cs Cursor.cs Wall.cs 16

17 [3] using System; namespace _2Dgame_project_A #if WINDOWS XBOX //Αυτο το Class ειναι δημιουργειται αυτοματα απο το ΧΝΑ, χρειαζεται για να... //... ξεκινησει το παιχνιδι και δεν χρειαζεται επεξεργασια. static class MainFunction static void Main(string[] args) // BrainssssKiCKer ειναι το κεντρικο παιχνιδι using (BrainssssKiCKer game = new BrainssssKiCKer()) game.run();// εντολη για να ξεκινησει το προγραμμα(πιο αναλυτικα αυτο το προγραμμα... //...υπαρχει απο την xna απλα για να ξεκινησει την BrainssssKiCKer ταξη). #endif 17

18 Αντικειμενο: BrainssssKiCKer.cs(Κυρίως Κώδικας) //Απαιτουμενες βιβλιοθηκες[3] using System; using System.Collections.Generic; using System.Linq; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.GamerServices; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Media; namespace _2Dgame_project_A // Το κυρίως παιχνιδι // Εδω θα μπορουσα να δημιουργησω ολοκληρο το παιχνιδι αλλα //προτιμησα να δημιουργησω classes (αντικειμενοστραφης προγραμματισμος) για να ειναι οργανωμενος ο κωδικας του παιχνιδιου ως προς τα αντικειμενα. Ετσι καλουμε εδω ολα τα υπολοιπα αντικειμενα(menu, obj, Heli, Enemy, Cursor, Wall, Bullets, Items, ZombieSpawner) ) public class BrainssssKiCKer : Microsoft.Xna.Framework.Game //ΑΡΧΙΚΟΠΟΙΗΣΕΙΣ. GraphicsDeviceManager graphics; //Οριζεται ως Διαχειριστης γραφικων της XNA. SpriteBatch spritebatch; // Menu menu; //Aρχικοποιηση του μενου Texture2D mytexture; //αρχικοποιηση μιας μεταβλητης(εικονας) 2 διαστασεων. Vector2 pos; // αρχικοποιηση της θεσης 2 διαστασεων public static SpriteFont font; // αρχικοποιηση της μεταβλητης ΛΕΞΕΩΝ. public static string Gamestate = "Menu";// static heli heli =new heli(new Vector2(150,150)); //Καλουμε τη ταξη του παικτη. static Cursor cursor = new Cursor(new Vector2(50, 50)); //Καλουμε τη ταξη του στοχου. MouseState mouse; // αρχικοποιηση της καταστασης του ποντικιου. Song song; // αρχικοποιηση μιας μεταβλητης μουσικης. public static Rectangle screen; // αρχικοποιηση της μεταβλητης ΜΕΓΕΘΟΥΣ. public static Rectangle room; // αρχικοποιηση της μεταβλητης ΜΕΓΕΘΟΥΣ. 18

19 public BrainssssKiCKer()//Βασικο αντικειμενο. //Ρυθμιση της αναλυσης της οθονης graphics = new GraphicsDeviceManager(this); graphics.preferredbackbufferwidth = 1600; //(διασταση του πλατους του 'παραθυρου' του παιχνιδιου) graphics.preferredbackbufferheight = 1000; //(διασταση του του υψους του 'παραθυρου' του παιχνιδιου) graphics.applychanges();//η εντολη αυτη εφαρμοζει τη παραπανω αναλυση οθονης. Content.RootDirectory = "Content";// Η διευθυνση των περιεχομενων της ΧΝΑ. //Η συναρτηση Initialize() προετοιμάζει το περιβάλλον του παιχνιδιού π.χ. ορίζει την αρχική κατάσταση των αντικειμένων protected override void Initialize()[6] Items.Initilize(); room = new Rectangle(0, 0, graphics.preferredbackbufferwidth * 4, graphics.preferredbackbufferheight * 4); //Eκχωρει το μεγεθος της οθονης*4 screen = new Rectangle(0, 0, graphics.preferredbackbufferwidth, graphics.preferredbackbufferheight); // Eκχωρει το μεγεθος της οθονης. menu = new Menu();//Καλειται το αντικειμενο μενου. base.initialize();//αρχικοποιηση της βασης δεδομενων. //φορτωνουμε τα αρχεια των αντικειμενων. protected override void LoadContent() // Δημιουργουμε ενα καινουργιο SpriteBatch,η χρηση του ειναι για την εμφανισει //γραφικων. spritebatch = new SpriteBatch(GraphicsDevice); font = Content.Load<SpriteFont>("Grammatoseira");//φορτωνει το αρχειο menu.loadcontent(content); //φορτωνει το αρχειο του μενου mytexture = Content.Load<Texture2D>("MAO");//φορτωνει το αρχειο του //background. pos = new Vector2(10, 10); //Αρχικοποιει τη θεση των αντικειμενων. foreach (obj MYobject in Items.objList) //Για οσα αντικειμενα περιεχονται στη λιστα να φορτωνονται οι εικονες τους. MYobject.LoadContent(this.Content); 19

20 song = Content.Load<Song>("song"); //φορτωνουμε μουσικη. MediaPlayer.Play(song); //Παιζει η μουσικη. MediaPlayer.IsRepeating = true; //Η μουσικη μολις τελειωσει επαναλαμβανεται. cursor.loadcontent(content); //φορτωνει το αρχειο του κερσορα. protected override void UnloadContent() //Εκφορτώνει τους πόρους του παιχνιδιού. // Εδώ γίνεται ο έλεγχος των εισόδων του χρήστη (ποντίκι, πληκτρολόγιο) που επηρεάζουν την αντίδραση των αντικειμένων. Ακόμα εδώ περιέχονται ολες οι συναρτήσεις που κάνουν τα αντικείμενα δυναμικά(να κινούνται ή οτι άλλο είναι προγραμματισμένα να κάνουν) protected override void Update(GameTime gametime) [6] //Η συνάρτηση Update εκτελείται 60 φορές το δευτερόλεπτο. if (Gamestate =="Exit" ) // H εντολη αυτη κλεινει το παιχνιδι απο το κουμπι του μενου EXIT. this.exit(); Window.Title = "Brainssss KiCKer";//O τιτλος πανω στο παραθυρο του παιχνιδιου. 20

21 switch (Gamestate) //Εντολη για την αλλαγη της καταστασης του παιχνιδιου. case "Game": foreach (obj MYobject in Items.objList) //Ενημερωνεται καθε αντικειμενο της λιστας MYobject. MYobject.Update(); break; case "Menu": menu.update(gametime); //Ενημερωνεται το αντικειμενο Menu. break; cursor.update();//ενημερωση της καταστασης του ποντικιου. mouse = Mouse.GetState();//θετει στη μεταβλητη τη κατασταση του ποντικιου. base.update(gametime); //Ενημερωση της βασης δεδομενων. // Εδω ελεγχουμε τι θα εμφανιστει το περιβαλλον του παιχνιδιου protected override void Draw(GameTime gametime) [6] //Η συνάρτηση Draw εκτελείται 60 φορές το δευτερόλεπτο. //Tο χρωμα που θα εχει το φόντο του παιχνιδιου. GraphicsDevice.Clear(Color.Black); switch (Gamestate) //Εντολη για την αλλαγη της καταστασης του παιχνιδιου. case "Game": spritebatch.begin(); //Στην ΧΝΑ για να εμφανιστουν καποια γραφικα στο παιχνιδι με τη συναρτηση draw ειναι απαραιτητο ο κωδικας για την φωτογραφια να μπει αναμεσα στις εντολες spritebatch.begin() και spritebatch.end().[5] 21

22 spritebatch.draw(mytexture, pos, Color.White); //Eμφανιζεται φωτογραφια Background. [6] foreach (obj MYobject in Items.objList) //Εμφανίζεται καθε αντικειμενο της λιστας MYobject. MYobject.Draw(spriteBatch); cursor.draw(spritebatch); // Εμφανίζεται ο κερσορας(στοχος). spritebatch.end(); if (Keyboard.GetState().IsKeyDown(Keys.F1)) graphics.isfullscreen = true; // Εφαρμογη πληρης οθονη οταν πατιεται το F1. graphics.applychanges(); if (Keyboard.GetState().IsKeyDown(Keys.F2)) graphics.isfullscreen = false; // Εφαρμογη παραθυρου οταν πατιεται το F2. graphics.applychanges();//αλλαζει τις ρυθμισεις στις παραπανω. break; case "Menu" : menu.draw(spritebatch); // Εφαρμογη του παιχνιδιου σε πληρη οθονη οταν πατιεται το F1. if (Keyboard.GetState().IsKeyDown(Keys.F1)) graphics.isfullscreen = true; graphics.applychanges(); // Εφαρμογη του παιχνιδιου σε παραθυρο οταν πατιεται το F1. if (Keyboard.GetState().IsKeyDown(Keys.F2)) graphics.isfullscreen = false; graphics.applychanges();//αλλαζει τις ρυθμισεις στις παραπανω. break; base.draw(gametime); //Επιστρεφει στη βαση δεδομενων το gametime. public static Vector2 GetCursorPos() return cursor.position; //επιστρεφει τη θεση του κερσορα. 22

23 //Απαιτουμενες βιβλιοθηκες[3] using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.GamerServices; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Media; namespace _2Dgame_project_A class obj[6] //Η ταξη(class) αυτη,ειναι υπευθυνη για την δημιουργια των αντικειμενων του... //... παιχνιδιου,τα οποια θα ειναι δυναμικα.δηλαδη η κατασταση τους θα αλλαζει //απο καποιους παραγοντες π.χ. πληκτρολογιο,ποντικι,χρονος,συναρτησεις κ.α) //Δημιουργία μεταβλητων. public Vector2 position; //ορίζει τη θεση του 2D αντικειμενου public float rotation = 0.0f; //ορίζει τη περιστροφη του 2D αντικειμενου public Texture2D spriteindex; //μεταβλητη με τη διευθυνση που θα φορτώθουν τα γραφικα. public string spritename = "block";//το μπλοκ ειναι μια εικονα που θα εμφανιζεται στα... //...αντικειμενα που δεν τους εχουμε ορισει καποια αλλη εικονα. public float speed = 0.0f; //Η ταχυτητα του αντικειμενου. public float Scale = 1.0f; //Οριζεται η κλιμακα. public Rectangle area; // //Οι μεταβλητες boolian δεχονται μονο δυο τιμες True False μας χρησιμευει στο να σταματαμε //τη συναρτηση update και draw οταν πεθανει το αντικειμενο. public bool alive = true; //Το αντικειμενο ειναι ζωντανο public bool solid = false; // 23 public obj(vector2 pos) //Συναρτηση obj. position = pos; //θεση αντικειμενου. public virtual void Update() //Οι συναρτησεις που εχουν την εντολη vitual, οπως στη παραπανω συναρτηση //επηρεαζονται...(αλλαζουν τα δεδομενα τους) απο τις συναρτησεις με το ιδιο ονομα των //αλλων αντικειμενων.

24 if (!alive) return; //Αν δεν ειναι ζωντανο το αντικειμενο σταματα ειναι ειναι δυναμικο. [6] pushto(speed, rotation); ////Είναι ένας αλγόριθμος γεωμετρίας των πίξελ της οθόνης ετσι ώστε να προσεγγίζεται η θέση του αντικειμένου στο παιχνίδι γνωρίζοντας τη κλίμακα της ταχύτητας που θα κινείται και θα περιστρέφεται. //Εδω τοποθετειται ενας ελεγχος για το αν ειναι ζωντανο το αντικειμενο. if (heli.hp == 0) // Αν ο παικτης πεθανει, γυρναει το παιχνιδι στο Μενου, μηδενιζει το σκορ και γεμιζει τη ζωη του για να ειναι ζωντανος για να επαναλαβει το γυρο, αμα ο χρηστης πατησει την επιλογη start. BrainssssKiCKer.Gamestate = "Menu"; heli. givehp(); heli.score = 0; UpdateArea();//Ενημερωνει το τη θεση του αντικειμενου. //φορτωνουμε το περιεχομενο του αντικειμενου. public virtual void LoadContent(ContentManager content) //εδω δηλωνεται η διευθυνση που θα περιεχονται τα γραφικα που θα φορτωθουν //στο παιχνιδι, στη περιπτωση αυτη ειναι ο φακελος "sprites\\" spriteindex = content.load<texture2d>("sprites\\" + this.spritename); area = new Rectangle(0, 0,spriteIndex.Width, spriteindex.height ); //Rectangle:Αποθηκεύει ένα σύνολο από τέσσερις ακέραιους που αντιπροσωπεύουν ενα τετραγωνο με το μέγεθος του αντικειμενου μας. [10] 24

25 // Εδω ελεγχουμε τι θα εμφανιστει το περιβαλλον του παιχνιδιου public virtual void Draw(SpriteBatch spritebatch) if (!alive) return; //Δηλωνεται ποιο θα ειναι το κεντρο του αντικειμενου. Vector2 center = new Vector2(spriteIndex.Width/2, spriteindex.height/2); spritebatch.draw(spriteindex, position, null, Color.White, MathHelper.ToRadians(rotation), center, Scale,SpriteEffects.None, 0); //Αυτη η εντολη //χρειαζεται στην ΧΝΑ για ξερει το προγραμμα σε ποιο σημειο, με ποιο μεγεθος,τι //αποχρωση,τι εφε θα εμφανισει τις εικονες του παιχνιδιου. [3] // Η ιδεα του collision ειναι ενα τετραγωνο με το μεγεθος του παικτη (Rectangle) το //οποιο ακολουθει τον παικτη και εντοπιζει αν θα ακουμπισει μελλοντικα το τετραγωνο //απο καποιο αλλο αντικειμενο. Ο παρακατω κωδικας collision εμποδιζει τα αντικειμενα //απο τη λιστα να περασουν απο αλλα αντικειμενα της λιστας που ειναι σταθερα(solid) //π.χ.ο τοιχος. public bool collision(vector2 pos,obj obj) [6] //Δημιουργειται μια καινουργια περιοχη που προσεγγιζει τη θεση του αντικειμενου. Rectangle newarea = new Rectangle(area.X, area.y, area.width, area.height); newarea.x += (int)pos.x; //Η x-συντεταγμένη για την επάνω αριστερή γωνία του //ορθογωνίου. newarea.y += (int)pos.y; //Η y-συντεταγμένη για την επάνω αριστερή γωνία του //ορθογωνίου. foreach (obj MYobject in Items.objList) //Γινεται ελεγχος για το αν καποι αντικειμενο απο τη λιστα ακουμπαει καποιο αλλο //αντικειμενο της λιστα που ειναι στερεο (solid). if (MYobject.GetType() == obj.gettype() && MYobject.solid) if (MYobject.area.Intersects(newArea)) return true; return false; 25

26 [6] //Ο παρακατω κωδικας collision εξαφανιζει τις σφαιρες οταν πεφτουν πανω στον //εχθρο. public obj collision(obj obj) foreach (obj MYobject in Items.objList) if (MYobject.GetType() == obj.gettype() && MYobject.alive) //Το get type παίρνει //τα δεδομενα για την κατασταση των αντικειμενων που περιεχει η λιστα. if (MYobjecto.area.Intersects(area)) return MYobject; return new obj(vector2.zero); public void UpdateArea() //φτιαχνουμε ενα τετραγωνο το οποιο ακολουθει τον παικτη για εντοπισουμε αν //ακουμπαει καποια αλλο αντικειμενο. area.x = (int)position.x - (spriteindex.width/2 ); area.y = (int)position.y - (spriteindex.height/2 ); public virtual void pushto(float pix, float dir) //Είναι ένας αλγόριθμος γεωμετρίας των πίξελ της οθόνης ετσι ώστε να προσεγγίζεται η θέση του αντικειμένου στο παιχνίδι γνωρίζοντας τη κλίμακα της ταχύτητας που θα κινείται και θα περιστρέφεται. float newx = (float)math.cos(mathhelper.toradians(dir)); float newy = (float)math.sin(mathhelper.toradians(dir)); position.x += pix * (float)newx; position.y += pix * (float)newy; 26

27 [3] //Απαιτουμενες βιβλιοθηκες using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.GamerServices; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Media; namespace _2Dgame_project_A class heli : obj //Σε αυτη τη ταξη υπαρχει ο κωδικας για τη κινηση,την περιστροφη,πυροβολισμος του οπλου, //κατασταση πληκτρολογιου. KeyboardState keyboard; KeyboardState prevkeyboard; //κατασταση ποντικιου. MouseState mouse; MouseState prevmouse; public static int a = 0; //Αρχικοποιηση μεταβλητων. [6] public static int giros = 50; public static int d = 10; public static int e = 0; public static int hp = 100; static int hpmax = 100; public static int score = 0; // Ταχυτητα του παικτη. float spd; // Ταχυτητα των σφαιρων. float bspd = 15; const int maxammo = 60; //μεγιστος αριθμος γεμιστηρα int ammo = 60; // αριθμος γεμιστηρα int rate =5; // Ρυθμος πυρος int firingtimer = 0; int reloadtimer = 0; //αρχικοποιηση μεταβλητης int reloadtime = 60; //χρονος για να οπλισει bool reloading = false; //κατασταση οπλισμα οπλου απενεργοποιημενη 27

28 public static heli Heli; public heli(vector2 pos) :base(pos) //βρισκει τη θεση απο τη βαση δεδομενων. position = pos; spd = 5; //Η ταχυτητα κινησης του παικτη. spritename = "player"; Heli = this; public static void givehp()[3] hp = hpmax; //Δινει μεγιστη ζωη public static void RemoveHp() hp -- ; //Μειώνει τη ζωη του παικτη κατα 1 public static Boolean hashp() return hp > 0; //Ελεγχει αν εχει ζωη ο παικτης. public static void increasescore() score+=5; //Αυξανει το σκορ κατα 5 //Η συναρτηση που ειναι override μπορει να ενημερωνει τις τιμες των μεταβλητων σε //συναρτησεις με το ιδιο ονομα που ειναι virtual(πχ στη ταξη obj ) που βρισκονται σε αλλη //ταξη. public override void Update() [7] Heli = this; //κωδικας για τον ελεγχο του οπλου απο το πληκτρολογιο και το ποντικι. keyboard = Keyboard.GetState();//εκχωρει την κατασταση του πληκρολογιου στη //μεταβλητη. mouse = Mouse.GetState();//εκχωρει την κατασταση του ποντικιου. //Κινηση του χαρακτηρα απο τα βελακια if (keyboard.iskeydown(keys.up) &&!collision(new Vector2(0, -spd), new Wall(new Vector2(0, 0)))) //Εαν το πληκτρο ΠΑΝΩ εχει πατηθει ΚΑΙ εαν ο παικτης ΔΕΝ ακουμπαει τον τοιχο //τοτε μειωσε τη θεση του αντικειμενου κατα spd.το ιδιο γινεται για τις παρακατω εντολες //των παρακατω πληκτρων. 28

29 position.y -= spd; [7] if (keyboard.iskeydown(keys.left) &&!collision(new Vector2(-spd, 0), new Wall(new Vector2(0, 0)))) position.x -= spd; if (keyboard.iskeydown(keys.down) &&!collision(new Vector2(0, spd), new Wall(new Vector2(0, 0)))) position.y += spd; if (keyboard.iskeydown(keys.right) &&!collision(new Vector2(spd, 0), new Wall(new Vector2(0, 0)))) position.x += spd; //Κινηση του οπλου απο τα(w.a.s.d) if (keyboard.iskeydown(keys.w) &&!collision(new Vector2(0, -spd), new Wall(new Vector2(0, position.y -= spd; if (keyboard.iskeydown(keys.a) &&!collision(new Vector2(-spd, 0), new Wall(new Vector2(0, position.x -= spd; if (keyboard.iskeydown(keys.s) &&!collision(new Vector2(0, spd), new Wall(new Vector2(0, position.y += spd; if (keyboard.iskeydown(keys.d) &&!collision(new Vector2(spd, 0), new Wall(new Vector2(0, position.x += spd; firingtimer++; //oταν γεμιζε το οπλο δεν πυροβολαει(!reloading)!!! if (mouse.leftbutton == ButtonState.Pressed &&!reloading) CheckShooting();//Οταν ενεργοποιειται η συναρτηση το οπλο πυροβολαει. if (keyboard.iskeydown(keys.space) &&!reloading) CheckShooting();//Οταν ενεργοποιειται η συναρτηση το οπλο πυροβολαει. 29

30 //Εντολη πληκτρολογιου για να γεμισει το οπλο σφαιρες. [7] if (keyboard.iskeydown(keys.r) keyboard.iskeydown(keys.numpad0)) reloading = true; //Εντολη πληκτρολογιου για να γεμισει το οπλο σφαιρες. if (keyboard.iskeydown(keys.rightcontrol) keyboard.iskeydown(keys.leftcontrol)) reloading = true; CheckReload();//Η συναρτηση ελεγχει τον γεμισμα του οπλου. //Εαν ο γεμιστηρας αδειασει γεμισει το οπλο σφαιρες. [6] if (ammo == 0) reloading = true; CheckReload();//Η συναρτηση ελεγχει τον γεμισμα του οπλου. //Συνδεει τη περιστροφη του οπλου με τη θεση του ποντικιου ετσι ωστε το οπλο να //σημαδευει τον κερσορα του ποντικιού. rotation = point_direction(position.x, position.y, mouse.x, mouse.y); prevkeyboard = keyboard; //εκχωρει την προηγουμενη κατασταση του //πληκρολογιου. prevmouse = mouse; //εκχωρει την προηγουμενη κατασταση του ποντικιου. base.update();//ενημερωση της βασης δεδομενων. //Αλλαζει το Gamestate στο Menu για να κανουμε ΠΑΥΣΗ. if (keyboard.iskeydown(keys.p) ) //Παυση με το πληκτρο P BrainssssKiCKer.Gamestate = "Menu"; if (keyboard.iskeydown(keys.back)) //Παυση με το πληκτρο πισω BrainssssKiCKer.Gamestate = "Menu"; if (hp <= 0) //εαν η ζωη το παικτη γινει μηδεν τοτε hp = 0; //εαν ζωη ειναι μηδεν σε περιπτωση που παρει αρνητικη τιμη. alive = false; //το αντικειμενο παυει να ειναι δυναμικο. //Εδω δημιουργουνται τα διαφορετικα σκορ τις καθε πιστας. //Εδω δημιουργω τα διαφορετικα σκορ τις καθε πιστας. for (int z = 0; z < 11; z++)//επαναληψη 10 γυρων. 30

31 if (z == a)//ελεγχει σε ποιο γυρο ειναι το παιχνιδι. [3] if (score == giros)//εαν το σκορ γινει ισο με το γυρο εκτελουνται τα παρακατω. //algorithm for time. BrainssssKiCKer.Gamestate = "Menu";//αλλαζει τη κατασταση του παιχνιδιου //σε κατασταση μενου. d = d - 1;//ποσοι γυροι εχουν μεινει. giros = giros + 200;//algorithm for score. score = 0;//μηδενιζεται το σκορ. a = a + 1;//αυξανετε ο γυρος κατα 1. heli.givehp();//μολις τελιωσει ο γυρος γεμιζει ζωη τον παικτη. foreach (obj MyZombies in Items.objList) //Για καθε αντικειμενο της λιστας κανε. if (MyZombies.GetType() == typeof(enemy))//οποιο απο τα αντικειμενα //ειναι τυπος εχθρος κανε. MyZombies.alive = false; //Mολις τελειωσει ο γυρος αδειαζει η λιστα με τα ζομπι. if (a == 11)//Αν ο γυρος παει 11 γυρνα στο μενου το παιχνιδι τελιωσε. BrainssssKiCKer.Gamestate = "Menu";//αλλαζει τη κατασταση του παιχνιδιου σε //κατασταση μενου. //Εμφανιζει στη οθονη καποιες πληροφορες σε σχεση με την κατασταση του //παιχνιδιου οπως ammo, health, score... public override void Draw(SpriteBatch spritebatch) if (BrainssssKiCKer.Gamestate == "Game") [4] //O παρακατω κωδικας εμφανιζει στην οθονη την κατασταστη των Ammo kai //Reloading score,pause,health kai round. spritebatch.drawstring(brainsssskicker.font, "Health :" + hp, new Vector2(5, -3 + BrainssssKiCKer.font.LineSpacing), Color.GreenYellow); spritebatch.drawstring(brainsssskicker.font, "Ammo :" + ammo, new Vector2(5, BrainssssKiCKer.font.LineSpacing), Color.GreenYellow); spritebatch.drawstring(brainsssskicker.font, "Score :" + score + "/" + giros, new Vector2(5, 25 + BrainssssKiCKer.font.LineSpacing), Color.GreenYellow); 31

32 [4] spritebatch.drawstring(brainsssskicker.font, "Press 'P' or 'Back' for Pause Game", new Vector2(500, BrainssssKiCKer.font.LineSpacing), Color.GreenYellow); spritebatch.drawstring(brainsssskicker.font, "Round " + a, new Vector2(150, BrainssssKiCKer.font.LineSpacing), Color.GreenYellow); if (reloading) spritebatch.drawstring(brainsssskicker.font, "Reloading :", new Vector2(10, 70 + BrainssssKiCKer.font.LineSpacing), Color.Red); base.draw(spritebatch); [6] //Η συναρτηση ελεγχει τον γεμισμα του οπλου. private void CheckReload() if (reloading) reloadtimer++; if (reloadtimer > reloadtime) ammo = maxammo; reloadtimer = 0; reloading = false; //Η συναρτηση ελεγχει ποτε και ποσο πυροβολαει το οπλο. private void CheckShooting() //ελεγχει ποτε θα αδιασει το οπλο "ammo >0". if (firingtimer > rate && ammo >0) firingtimer = 0; Shoot(); private void Shoot() ammo--;//οσο πυροβολαει το οπλο μειωνονται οι σφαιρες. foreach (obj MYobject in Items.objList) //Για καθε αντικειμενο της λιστας κανε... // με τον παρακατω ελεγχο επιτρεπουμε στο οπλο να πυροβολαει οταν εχει //σφαιρες και ειναι ζωντανο. if(myobject.gettype() == typeof(bullets) &&! MYobject.alive) //Εαν καποιο My object της λιστας ειναι σφαιρες και δεν ειναι ηδη μεσα στο // παιχνιδι κανε τα παρακατω. MYobject.position = position; //Η σφαιρα ξεκιναει απο τη θεση του οπλου. 32

33 MYobject.UpdateArea();//Ενημερωνει την θεση της σφαιρας. MYobject.rotation = rotation; //Η σφαιρα παιρνει περιστροφη του οπλου //δηλωνουμε τη ταχυτητα στης σφαιρας. MYobject.speed = bspd; //Η σφαιρα παιρνει τη ταχυτητα bspd. MYobject.alive = true; //Η σφαιρα ειναι ζωντανη. break; //Ο παρακατω αλγοριθμος βρισκει τη γωνια που σημαδευεις με το ποντικι. [6] private float point_direction(float x, float y, float x2, float y2) float diffx = x - x2; float diffy = y - y2; float adj = diffx; float opp = diffy; float tan = opp / adj; float res = MathHelper.ToDegrees((float)Math.Atan2(opp,adj)); res = (res - 180) % 360; if (res < 0) res += 360; return res; 33

34 [3] //Απαιτουμενες βιβλιοθηκες using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.GamerServices; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Media; namespace _2Dgame_project_A class Items public static List<obj> objlist = new List<obj>();//Δημιουργια μιας λιστας με ολα τα //αντικειμενα. //Η συναρτηση Initialize() προετοιμάζει το περιβάλλον του παιχνιδιού π.χ. ορίζει την //αρχική κατάσταση των αντικειμένων public static void Initilize() for (int i = 0; i < 80; i++) //στη επαναληψη αυτη οριζουμε 80 ζωντανες σφαιρες. obj MYobject = new Bullets(new Vector2(0,0)); MYobject.alive = false; //Τα αντικειμενα ειναι στη κατασταση ζωντανα objlist.add(myobject); [6]. //Μεγιστος αριθμος ζωντανων εχθρων που θα εμφανιζονται στο παιχνιδι ειναι 60. for (int j = 0; j < 60; j++) Enemy MyZombies = new Enemy(new Vector2(1340, 90)); MyZombies.alive = false; objlist.add(myzombies); //εδω βαζουμε τον παικτη και τον στοχο στο παιχνιδι. objlist.add(new heli(new Vector2(350, 450))); objlist.add(new Cursor(new Vector2(0, 0))); //εμφανιζει τα σημειου που θα βγαινει ο εχθρος. 34

35 objlist.add(new ZombieSpawner(new Vector2(1550, 600))); objlist.add(new ZombieSpawner(new Vector2(1850, 300))); objlist.add(new ZombieSpawner(new Vector2(1650, 100))); objlist.add(new ZombieSpawner(new Vector2(1750, 900))); //Εδω φτιαχνεται ενα πλαισιο απο τοιχο στο παιχνιδι. //Πλαισιο με γυρους,σκορ,ζωη,σφαιρες. objlist.add(new Wall(new Vector2(230, 50))); objlist.add(new Wall(new Vector2(200, 50))); objlist.add(new Wall(new Vector2(115, 50))); objlist.add(new Wall(new Vector2(50, 50))); //αριστερα τοιχος objlist.add(new Wall(new Vector2(-40, 150))); objlist.add(new Wall(new Vector2(-40, 250))); objlist.add(new Wall(new Vector2(-40, 350))); objlist.add(new Wall(new Vector2(-40, 450))); objlist.add(new Wall(new Vector2(-40, 550))); objlist.add(new Wall(new Vector2(-40, 650))); objlist.add(new Wall(new Vector2(-40, 750))); objlist.add(new Wall(new Vector2(-40, 850))); objlist.add(new Wall(new Vector2(-40, 950))); //δεξια τοιχος objlist.add(new Wall(new Vector2(1570, 50))); objlist.add(new Wall(new Vector2(1570, 150))); objlist.add(new Wall(new Vector2(1570, 250))); objlist.add(new Wall(new Vector2(1570, 350))); objlist.add(new Wall(new Vector2(1570, 450))); objlist.add(new Wall(new Vector2(1570, 550))); objlist.add(new Wall(new Vector2(1570, 650))); objlist.add(new Wall(new Vector2(1570, 750))); objlist.add(new Wall(new Vector2(1570, 850))); objlist.add(new Wall(new Vector2(1570, 950))); objlist.add(new Wall(new Vector2(1670, 50))); objlist.add(new Wall(new Vector2(1670, 150))); objlist.add(new Wall(new Vector2(1670, 250))); objlist.add(new Wall(new Vector2(1670, 350))); objlist.add(new Wall(new Vector2(1670, 450))); objlist.add(new Wall(new Vector2(1670, 550))); objlist.add(new Wall(new Vector2(1670, 650))); objlist.add(new Wall(new Vector2(1670, 750))); objlist.add(new Wall(new Vector2(1670, 850))); objlist.add(new Wall(new Vector2(1670, 950))); objlist.add(new Wall(new Vector2(1670, 1050))); 35

36 //πανω τοιχος objlist.add(new Wall(new Vector2(1400, -40))); objlist.add(new Wall(new Vector2(1300, -40))); objlist.add(new Wall(new Vector2(1200, -40))); objlist.add(new Wall(new Vector2(1100, -40))); objlist.add(new Wall(new Vector2(1000, -40))); objlist.add(new Wall(new Vector2(900, -40))); objlist.add(new Wall(new Vector2(800, -40))); objlist.add(new Wall(new Vector2(700, -40))); objlist.add(new Wall(new Vector2(600, -40))); objlist.add(new Wall(new Vector2(500, -40))); objlist.add(new Wall(new Vector2(400, -40))); objlist.add(new Wall(new Vector2(300, -40))); objlist.add(new Wall(new Vector2(200, -40))); objlist.add(new Wall(new Vector2(100, -40))); objlist.add(new Wall(new Vector2(0, -40))); //κατω τοιχος objlist.add(new Wall(new Vector2(1600, 1040))); objlist.add(new Wall(new Vector2(1500, 1040))); objlist.add(new Wall(new Vector2(1400, 1040))); objlist.add(new Wall(new Vector2(1300, 1040))); objlist.add(new Wall(new Vector2(1200, 1040))); objlist.add(new Wall(new Vector2(1100, 1040))); objlist.add(new Wall(new Vector2(1000, 1040))); objlist.add(new Wall(new Vector2(900, 1040))); objlist.add(new Wall(new Vector2(800, 1040))); objlist.add(new Wall(new Vector2(700, 1040))); objlist.add(new Wall(new Vector2(600, 1040))); objlist.add(new Wall(new Vector2(500, 1040))); objlist.add(new Wall(new Vector2(400, 1040))); objlist.add(new Wall(new Vector2(300, 1040))); objlist.add(new Wall(new Vector2(200, 1040))); objlist.add(new Wall(new Vector2(100, 1040))); objlist.add(new Wall(new Vector2(0, 1040))); 36

37 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.GamerServices; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Media; namespace _2Dgame_project_A class Enemy : obj[6] //Αρχικοποιηση καποιων μεταβλητων που θα μας χρησιμευσουν παρακατω. int health = 100; float spd = 1; //ταχυτητα του ζομπι. [3] int damagetimer = 300; //Οταν η δίπλα μεταβλητη ειναι μηδεν το ζομπι μπορει να // // τραυματισει τον παικτη, το 300 ειναι ενα ειδος //καθυστέρησης για καθε χτυπημα του ζομπι. public Enemy(Vector2 pos) : base(pos) position = pos; //η θεση του ζομπι spritename = "zombie";//το ονομα του αρχειου του ζομπι. health = 50; //η ζωη του ζομπι speed = spd; //ταχυτητα του ζομπι. if (!alive) return; public void damageplayer() if (damagetimer == 0)//Οταν ειναι μηδεν το ζομπι μπορει να τραυματισει τον παικτη damagetimer = 300; heli.removehp();//μειώνει τη ζωη του παικτη κατα 1 37

38 public override void Update()[6] //Ο εχθρος ερχεται προς το μερος του παικτη, οταν του τελιωσει η ζωη //εξαφανιζεται. if (health > 0) rotation = point_direction(position.x, position.y, heli.heli.position.x, heli.heli.position.y); //Το ζομπι πηγαινει προς την θεση του παικτη. if (damagetimer > 0) damagetimer--; //Μειωνει κατα 1 το χρονο. //Οταν ο εχθρος ''ακουμπησει'' τον παικτη, ο παικτης χανει ζωη obj MyZombies = collision(new heli(new Vector2(heli.Heli.position.X, heli.heli.position.y ))); if (MyZombies.GetType() == typeof(heli)) //Εαν το αντικειμενο ειναι ο παικτης τοτε damageplayer();//καλει τη συναρτηση που μειωνε ιτη ζωη του παικτη. // Οταν πεθανει ενας εχθρος παιρνεις 5 ποντους. if (health == 0 ) heli.increasescore();//η συναρτηση αυτη καλειται απο το αντικειμενο heli και αυξανει το... //...σκορ κατα 5 μοναδες. alive = false; //Το αντικειμενο δεν ειναι δυναμικο πια γιατι δεν ειναι ζωντανο. health = 50; //Η ζωη του εχθρου zombie. base.update();// Ενημερωνετε η βαση δεδομενων. 38

39 //Ο παρακατω αλγοριθμος βρισκει τη γωνια που σημαδευεις με το ποντικι. private float point_direction(float x, float y, float x2, float y2) [6] float diffx = x - x2; float diffy = y - y2; float adj = diffx; float opp = diffy; float tan = opp / adj; float res = MathHelper.ToDegrees((float)Math.Atan2(opp, adj)); res = (res - 180) % 360; if (res < 0) res += 360; return res; public void Damage(int dmg) health -= dmg; Μειωνει τη ζωη των ζομπι κατα 1 39

40 40 ZombieSpawner [3] using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.GamerServices; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Media; namespace _2Dgame_project_A class ZombieSpawner : obj[6] //Αρχικοποιησεις μεταβλητων private int spawntimer = 0; public static int spawntime = 300; public ZombieSpawner(Vector2 pos) : base(pos) position = pos; //Η θεση του αντικειμενου //Απο τη λιστα με τα αντικειμενα που δημιουργησα παιρνει τον εχθρο. public override void Update() IncrementTimers();//Aυξανει κατα ενα το χρονο if (spawntimer > spawntime) //καθε φορα που το spawntimer γινεται 300 βγαινει //ενα ζομπι. spawntimer = 0; foreach (obj MYobject in Items.objList) if (MYobject.GetType() == typeof(enemy) &&! MYobject.alive) //εαν βρει ζομπι παει στη κατω εντολη MYobject.alive = true; //Ζωντανευει ενα ζομπι MYobject.position = position; //Ενα ζομπι εμφανιζεται στη θεση του zombie spawner. break; //Διακοπτουμε την εντολη for each με το break για να βγαζει καθε //φορα που το spawntime γινεται 300 ενα ζομπι.

41 private void IncrementTimers()[3] if (heli.a == 1 heli.a == 2 heli.a == 3) //Η ταχυτητα εμφανισης ζομπι στου γυρους 1,2,3 spawntimer = spawntimer + 1; if (heli.a == 4 heli.a == 5 heli.a == 6 heli.a == 7) //Η ταχυτητα εμφανισης ζομπι στου γυρους 4,5,6 spawntimer = spawntimer + 2; if (heli.a == 8 heli.a == 9 heli.a == 10) //Η ταχυτητα εμφανισης ζομπι στου γυρους 8,9,10 spawntimer = spawntimer + 3; 41

42 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.GamerServices; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Media; namespace _2Dgame_project_A class Bullets : obj[6] public Bullets(Vector2 pos) : base(pos) //βρισκει τη θεση απο τη βαση δεδομενων του obj. position = pos; spritename = "bullet"; [3] public override void Update() if (!alive) return; //Αν δεν ειναι ζωντανη δεν κανει τιποτα. //εξαφανιζεται η σφαιρα οταν πεφτει σε τοιχο. if (collision(vector2.zero, new Wall(new Vector2(0, 0)))) alive = false; //η σφαιρα δεν ειναι ζωντανη. //Δημιουργει damage στον εχθρο οταν ερχεται σε επαφη με τη σφαιρα. obj MYobject = collision(new Enemy(new Vector2(0, 0))); if (MYobject.GetType() == typeof(enemy)) //Αν το αντικειμενο ειναι εχθρος κανε... alive = false; Enemy MyZombies = (Enemy) MYobject; //Μετατροπη obj σε Enemy. MyZombies.Damage(10); //Μειωνει τη ζωη των ζομπι κατα 1 απο τα 10 base.update();//ενημερωση της βασης δεδομενων. 42

43 [3] using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.GamerServices; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Media; namespace _2Dgame_project_A //Δημιουργω τοιχο στο παιχνιδι. class Wall : obj public Wall(Vector2 pos) [6] : base(pos) //βρισκει τη θεση απο τη βαση δεδομενων του obj solid = true; //ειναι στερεο. position = pos; //μεταβλητη για τη θεση του τοιχου. spritename = "wall";//το ονομα του αρχειου του τοιχου. 43

44 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.GamerServices; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Media; namespace _2Dgame_project_A class Cursor : obj[6] //Σε αυτη τη ταξη υπαρχει ο κωδικας του κερσορα "στοχου του οπλου". MouseState mouse; //εκχωρει την κατασταση του ποντικιου. //Αυτη η ταξη επιστρεφει τη θεση του κερσορα στο παιχνιδι και προς αυτη τη θεση θα... //...κατευθυνεται η σφαιρα που ξεκιναει απο το παικτης-οπλο. public Cursor(Vector2 pos) : base(pos) //βρισκει τη θεση απο τη βαση δεδομενων. position = pos; //Η θεση του αντικειμενου. spritename = "cursor";//το ονομα του αρχειου της εικονας του κερσορα. public override void Update() mouse = Mouse.GetState();//Η κατασταση που βρισκεται το ποντικι. [3] position = new Vector2(mouse.X,mouse.Y); // τη θεση του κερσορα στο παιχνιδι. base.update();//ενημερωση της βασης δεδομενων. 44

45 [3] using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.GamerServices; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Media; namespace _2Dgame_project_A class Menu[6] public static int c = 0; KeyboardState keyboard; //κατασταση πληκτρολογιου. KeyboardState prevkeyboard; //προηγουμενη κατασταση πληκτρολογιου. SpriteFont spritefont; // αρχικοποιηση της μεταβλητης ΛΕΞΕΩΝ. List<string> buttonlist = new List<string>();// Δημιουργια λιστας κουμπιων μενου. int selected = 0; // αρχικοποιηση της μεταβλητης public Menu() // μενου κουμπια μπορουν να αλλαζουν την κατασταση του παιχνιδιου. buttonlist.add("start Game");// μενου κουμπι startgame. buttonlist.add("exit");// μενου κουμπι exit. public void LoadContent(ContentManager Content) spritefont = Content.Load<SpriteFont>(" Grammatoseira ");//φορτωνει το αρχειο 45

46 public void Update(GameTime gametime) [7] c = heli.α - 1; //Θετει στο c τον αριθμο του προηγουμενου γυρου. keyboard = Keyboard.GetState(); //Ελεγχος του μενου απο το πληκτρολογιο. if (CheckKeyboard(Keys.Up)) //Εαν πατηθει το πληκτρο πανω κανε if (selected > 0) selected--; //Εαν το selected ειναι μεγαλυτερο απο το 0 μειωσε το κατα 1. if (CheckKeyboard(Keys.Down)) //Εαν πατηθει το πληκτρο κατω κανε if (selected < buttonlist.count - 1) selected++; //Εαν το selected ειναι μικροτερο απο το τελευταιο κουμπι αυξησε το κατα 1. if (CheckKeyboard(Keys.Enter)) //Εαν πατηθει το πληκτρο enter κανε. switch (selected) //επελεξε τον αριθμο της μεταβλητης selected. case 0: //Εαν το selected ειναι 0 ξεκινα το παιχνιδι. BrainssssKiCKer.Gamestate ="Game"; break; case 1: //Εαν το selected ειναι 1 πηγαινε στο μενου. BrainssssKiCKer.Gamestate = "Exit"; break; if (CheckKeyboard(Keys.Space)) //Εαν πατηθει το πληκτρο space κανε. switch (selected) //επελεξε τον αριθμο της μεταβλητης selected. case 0: //Εαν το selected ειναι 0 ξεκινα το παιχνιδι. BrainssssKiCKer.Gamestate = "Game"; break; case 1: //Εαν το selected ειναι 1 πηγαινε στο μενου. BrainssssKiCKer.Gamestate = "Exit"; break; public bool CheckKeyboard(Keys key) //Ελεγχος για το εαν εχει πατηθει καποιο πληκτρο απο το πληκτρολογιο του χρηστη. return (keyboard.iskeydown(key) &&!prevkeyboard.iskeydown(key)); 46

47 public void Draw(SpriteBatch spritebatch) Color color; //Δηλωση της μεταβλητης int linepadding = 10; //κενο γραμμης μεταξυ των κουμπιων "Exit" και Game. //Στην ΧΝΑ για να εμφανιστουν καποια γραφικα στο παιχνιδι με τη συναρτηση draw ειναι //απαραιτητο ο κωδικας για την φωτογραφια να μπει αναμεσα στις εντολες //spritebatch.begin() και spritebatch.end().[5] spritebatch.begin(); for (int i = 0; i < buttonlist.count; i++)//για οσα κουμπια εχει η λίστα κανε //Το χρωμα για οταν το κουμπι ειναι επιλεγμενο και το χρωμα για οταν το κουμπι δεν ειναι //ειναι επιλεγμενο color = (i == selected)? Color.Goldenrod : Color.Aquamarine; //Ο κατω κωδικας εμφανιζει τα κουμπια στο μενου. spritebatch.drawstring(spritefont, buttonlist[i], new Vector2 ((BrainssssKiCKer.screen.Width / 2) - (spritefont.measurestring(buttonlist[i]).x / 2), (BrainssssKiCKer.screen.Height / 2) - (spritefont.linespacing * buttonlist.count / 2) + ((spritefont.linespacing + linepadding) * i)), color); //Τα παρακατω μηνυματα εμφανιζονται μονο στο μενου if (BrainssssKiCKer.Gamestate == "Menu") //O παρακατω κωδικας εμφανιζει στην οθονη την κατασταση καποιων μεταβλητων //και δινει διαφορες οδηγιες στον χρηστη για το πως να χειριστει το παιχνιδι. [4] spritebatch.drawstring(brainsssskicker.font, "Project Create by Gerakas George Hlias", new Vector2(15, BrainssssKiCKer.font.LineSpacing), Color.Red); spritebatch.drawstring(brainsssskicker.font, "AM : 4929 ATEI Chania", new Vector2(15, 10 + BrainssssKiCKer.font.LineSpacing), Color.Red); spritebatch.drawstring(brainsssskicker.font, "Project for Dr.Konstantaras A.", new Vector2(15, 30 + BrainssssKiCKer.font.LineSpacing), Color.Red); spritebatch.drawstring(brainsssskicker.font, "HELLOW To BrainsSSSS KiCKer ", new Vector2(600, BrainssssKiCKer.font.LineSpacing), Color.Purple); spritebatch.drawstring(brainsssskicker.font, "Beta ", new Vector2(1200, BrainssssKiCKer.font.LineSpacing), Color.Purple); spritebatch.drawstring(brainsssskicker.font, "...Control Menu with Buttons: Up,Down,Enter to Play or Exit...", new Vector2(350, BrainssssKiCKer.font.LineSpacing), Color.Green); 47

48 [4] spritebatch.drawstring(brainsssskicker.font, "Game controls by KEYS (W, A,S,D,R,MOUSE) or (UP,DOWN,LEFT,RIGHT,MOUSE, 0 to reload or CTRL)", new Vector2(105, BrainssssKiCKer.font.LineSpacing), Color.Green); spritebatch.drawstring(brainsssskicker.font, "...also you can shoot with SPACE", new Vector2(350, BrainssssKiCKer.font.LineSpacing), Color.Green); spritebatch.drawstring(brainsssskicker.font, "For fullscreen press the button 'F1' ", new Vector2(850, 60 + BrainssssKiCKer.font.LineSpacing), Color.SandyBrown); spritebatch.drawstring(brainsssskicker.font, "For exit fullscreen press the button 'F2' ", new Vector2(850, BrainssssKiCKer.font.LineSpacing), Color.SandyBrown); if (heli.a!= 11) //Το μηνυμα εμφανιζεται μεχρι να τερματιστει το παιχνιδι. spritebatch.drawstring(brainsssskicker.font, "Press Start to continue to round " + heli.a, new Vector2(550, BrainssssKiCKer.font.LineSpacing), Color.GreenYellow); if (heli.a!= 11 && heli.a!= 1) //Το μηνυμα εμφανιζεται απο το τελος του 1 γυρου μεχρι να τελιωσει παιχνιδι. spritebatch.drawstring(brainsssskicker.font, "Congratulation you finish the round " + c + "!!!! " + heli.d + " Rounds Remaining!!!!", new Vector2(350, BrainssssKiCKer.font.LineSpacing), Color.GreenYellow); if (heli.a == 11) //Το μηνυμα εμφανιζεται μολις τερματιστει το παιχνιδι. spritebatch.drawstring(brainsssskicker.font, "Congratulation you win :)!!! ", new Vector2(650, BrainssssKiCKer.font.LineSpacing), Color.GreenYellow); spritebatch.drawstring(brainsssskicker.font, "No more rounds!!!you can only exit the game!!! ", new Vector2(550, BrainssssKiCKer.font.LineSpacing), Color.GreenYellow); spritebatch.end(); 48

49 49 Το περιβαλλον του παιχνιδιου[3]

50 50

51 Στάδια βελτίωσης του παιχνιδιού Eνδιάμεσα απο αυτα τα Beta υπηρξαν και αλλα με μικροαλλαγες Ημερομηνια:5/7/2014 Beta Πολυ λιτο μενου χωρις πληροφοριες 51

52 Ημερομηνια:25/7/2014 Beta Το μενού έχει περισσότερες πληροφορίες και οδηγίες. 52

53 Ημερομηνια:22/9/2014 Beta Η τελική μορφή του μενού του παιχνιδιού που τα εχει ολα! 53

54 Ημερομηνια:3/11/2014 Beta Το μενού του παιχνιδιού παραμένει ίδιο.οταν ο παικτης κερδισει και τον τελευταιο γυρο το παιχνιδι γυρναει στο μενου με τα παρακατω μηνυματα και ο χρηστης το μονο που μπορει να κανει ειναι να πατησει το κουμπι exit. 54

55 Peter Kuhn "Mister Goodcat" 10) Function X press C# Aplication design(rectangle diagram) Εισαγωγή στη C# Γκανάτσιος) 55

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; Εισαγωγή Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα; 1. Σελίδα μαθήματος Εγγραφή Ο κάθε φοιτητής πρέπει να κάνει εγγραφή στη σελίδα του μαθήματος στην πλατφόρμα e-class

Διαβάστε περισσότερα

Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites

Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites Γραφικά υπολογιστών Εργαστήριο 10 Εισαγωγή στα Sprites Σκοπός της 10ης άσκησης είναι να μάθουμε να χρησιμοποιούμε sprites και να φτιάξουμε ένα παιχνίδι που χρησιμοποιεί συγκρούσεις. Θα δούμε επίσης μερικά

Διαβάστε περισσότερα

Βυζαντινός Ρεπαντής Κολλέγιο Αθηνών 2010

Βυζαντινός Ρεπαντής Κολλέγιο Αθηνών 2010 Βυζαντινός Ρεπαντής Κολλέγιο Αθηνών 2010 Δημιουργία ενός απλού παιχνιδιού με το Gamemaker (μετάφραση από το http://www.stuffucanuse.com/downloads/gamemaker-introductionlessons/free_game_downloads_gamemaker.htm)

Διαβάστε περισσότερα

Το τρίτο παιχνίδι ΛΑΒΥΡΙΝΘΟΣ ΜΕ ΕΜΠΟΔΙΑ

Το τρίτο παιχνίδι ΛΑΒΥΡΙΝΘΟΣ ΜΕ ΕΜΠΟΔΙΑ σύντομες σημειώσεις βασισμένες σε δουλειά των συναδέλφων Κ. Φλώρου και Μ. Μαντουβάλου Το τρίτο παιχνίδι ΛΑΒΥΡΙΝΘΟΣ ΜΕ ΕΜΠΟΔΙΑ Σκοπός του παιχνιδιού είναι ο παππούς να μπορέσει να κινηθεί μέσα έναν λαβύρινθο

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το

Διαβάστε περισσότερα

Το δεύτερο παιχνίδι ΤΟΥΒΛΑΚΙΑ

Το δεύτερο παιχνίδι ΤΟΥΒΛΑΚΙΑ Το δεύτερο παιχνίδι ΤΟΥΒΛΑΚΙΑ Στο παιχνίδι υπάρχουν τουβλάκια διαφόρων χρωμάτων. Σκοπός του παιχνιδιού είναι να καταστραφούν όλα τα τουβλάκια. Ο παίκτης χειρίζεται από το πληκτρολόγιο μία ρακέτα. Ένα μπαλάκι

Διαβάστε περισσότερα

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Σκοπός Nα κατασκευάσουν πίνακες από δεδομένα. Να κατασκευάσουν συναρτήσεις με πίνακες. Να κάνουν χρήση

Διαβάστε περισσότερα

> μεγαλύτερο <= μικρότερο ή ίσο < μικρότερο == ισότητα >= μεγαλύτερο ή ίσο!= διαφορετικό

> μεγαλύτερο <= μικρότερο ή ίσο < μικρότερο == ισότητα >= μεγαλύτερο ή ίσο!= διαφορετικό 5 ο Εργαστήριο Λογικοί Τελεστές, Δομές Ελέγχου Λογικοί Τελεστές > μεγαλύτερο = μεγαλύτερο ή ίσο!= διαφορετικό Οι λογικοί τελεστές χρησιμοποιούνται για να ελέγξουμε

Διαβάστε περισσότερα

4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος

4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος 4 ο Εργαστήριο Τυχαίοι Αριθμοί, Μεταβλητές Συστήματος Μεταβλητές Συστήματος Η Processing χρησιμοποιεί κάποιες μεταβλητές συστήματος, όπως τις ονομάζουμε, για να μπορούμε να παίρνουμε πληροφορίες από το

Διαβάστε περισσότερα

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Τμήμα Πληροφορικής & Επικοινωνιών Τομέας Υπολογιστικών Τεχνικών & Συστημάτων Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010 Ιωάννης Γεωργουδάκης - Πάρις Μαστοροκώστας Σεπτέμβριος 2011 ΠΕΡΙΕΧΟΜΕΝΑ

Διαβάστε περισσότερα

Breakdance Computer Game σε Scratch.

Breakdance Computer Game σε Scratch. Breakdance Computer Game σε Scratch. Ταστίογλου Μαριάννα 1, Τραντοπούλου Μαργαρίτα 2 1 Μαθήτρια Γ Τάξης, 2 ο Γυμνάσιο Ευόσμου atas94@otenet.gr 2 Μαθήτρια Γ Τάξης, 2 ο Γυμνάσιο Ευόσμου daizy@in.gr Δασκαλάκης

Διαβάστε περισσότερα

Φύλλο Εργασίας: Παιχνίδι Λαβύρινθος (MAZE) Προγραμματιστικό Εργαλείο: GAME MAKER. Ονοματεπώνυμο:

Φύλλο Εργασίας: Παιχνίδι Λαβύρινθος (MAZE) Προγραμματιστικό Εργαλείο: GAME MAKER. Ονοματεπώνυμο: Φύλλο Εργασίας: Παιχνίδι Λαβύρινθος (MAZE) Προγραμματιστικό Εργαλείο: GAME MAKER Ονοματεπώνυμο: Τμήμα: Σκοπός σας είναι να φτιάξετε ένα ηλεκτρονικό παιχνίδι για περιπλάνηση σε Λαβύρινθο (MAZE) χρησιμοποιώντας

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το αντικείμενο input

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr 1 Δομημένος προγραμματισμός έναντι αντικειμενοστρεφούς

Διαβάστε περισσότερα

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα.

Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα. Ερωτήσεις προόδου C Παρακάτω δίνεται o σκελετός προγράμματος σε γλώσσα C. Σχολιάστε κάθε γραμμή του κώδικα. #include // δίνει οδηγία στον compiler να // συμπεριλάβει την βιβλιοθήκη stdio int

Διαβάστε περισσότερα

Slalom Race Computer Game on Scratch

Slalom Race Computer Game on Scratch Slalom Race Computer Game on Scratch Μπογιατζή Ελισάβετ ¹, Μεταξά Παυλίνα², Νεστοροπούλου Ευσεβεία³, Μαρόγλου Ευαγγελία 4 1 boelisabet@gmail.com 2 pavlinamet2@gmail.com 3 makis.nestoro@hotmail.com 4 euaggeliam2000@gmail.com

Διαβάστε περισσότερα

Καροτοκυνηγός. Αντικείμενα

Καροτοκυνηγός. Αντικείμενα Καροτοκυνηγός Το παιχνίδι λαμβάνει χώρα σε ένα κτήμα, όπου στη δεξιά του πλευρά του υπάρχει ένα χωράφι με καρότα τα οποία οριοθετούνται από μια λευκή ευθεία γραμμή αριστερά τους (βλ. επόμενη εικόνα). Το

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργία Κλάσεων και Αντικειμένων Κλάση Μια κλάση είναι μία αφηρημένη περιγραφή αντικειμένων με κοινά χαρακτηριστικά και κοινή συμπεριφορά. Ένα καλούπι/πρότυπο

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Στην άσκηση αυτή θα υλοποιήσετε μια κλάση RandomVector η οποία διαχειρίζεται ένα τυχαίο διάνυσμα ακεραίων το οποίο μπορεί να έχει οποιοδήποτε

Διαβάστε περισσότερα

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C#

Εισαγωγή σε αντικειμενοστραφή concepts. Και λίγη C# Εισαγωγή σε αντικειμενοστραφή concepts Και λίγη C# Κλάσεις Κλάση: τύπος δεδομένων που αποτελεί συλλογή πεδίων, ορισμών συναρτήσεων/μεθόδων και ορισμών άλλων τύπων δεδομένων. Αντίστοιχο σκεπτικό με struct

Διαβάστε περισσότερα

Create Sprite at Runtime

Create Sprite at Runtime Create Sprite at Runtime (with ActionScript 3.0) Free Flash Demos Tested on Adobe CS4 Το σενάριο: Να φτιάξεις ένα sprite (που στον «μουσαμά» του να υπάρχει μια ζωγραφιά, π.χ. ένα τετράγωνο). Αυτό να το

Διαβάστε περισσότερα

Tank Rescue Computer Game σε Scratch

Tank Rescue Computer Game σε Scratch Tank Rescue Computer Game σε Scratch Μπέλτσος Νικόλαος 1, Παναγιωτόπουλος Ευάγγελος 2, Παπαδόπουλος Βασίλης 3, Παπουδάρης Κωνσταντίνος 4 1 sokin2@yahoo.gr 2 vaggelispan@yahoo.gr 3 papadopoulos_vasilis@yahoo.gr

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java Είσοδος Χρησιμοποιούμε την κλάση Scanner της Java import java.util.scanner; Αρχικοποιείται με το ρεύμα εισόδου: Scanner in = new Scanner(System.in);

Διαβάστε περισσότερα

Ενότητα: GameMaker Τα βασικά. Δημιουργώντας ένα παιχνίδι µε το GameMaker

Ενότητα: GameMaker Τα βασικά. Δημιουργώντας ένα παιχνίδι µε το GameMaker Μάθημα: Εφαρμογές Πληροφορικής Ημ/νια: 13-1-2016 Φύλλο Εργασίας Τάξη: A Λυκείου Ενότητα: GameMaker Τα βασικά Δραστηριότητα 1η Δημιουργώντας ένα παιχνίδι µε το GameMaker Το GameMaker είναι µία εφαρμογή

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Μαθήματα από τα εργαστήρια

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Μαθήματα από τα εργαστήρια ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Μαθήματα από τα εργαστήρια ΕΡΓΑΣΤΗΡΙΟ 1 Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το αντικείμενο

Διαβάστε περισσότερα

ΣΚΗΝΙΚΟ ΥΠΟΒΑΘΡΑ ΑΡΧΙΚΗ

ΣΚΗΝΙΚΟ ΥΠΟΒΑΘΡΑ ΑΡΧΙΚΗ Scratch 1. Σκηνικό (Αρχική Έχασες Κέρδισες). Η πρώτη μου δουλειά όταν φτιάχνω ένα παιχνίδι είναι πάω στο ΣΚΗΝΙΚΟ - ΥΠΟΒΑΘΡΑ και να σχεδιάσω (ή να αντιγράψω μια εικόνα από το διαδίκτυο ή από οπουδήποτε

Διαβάστε περισσότερα

Δομή Επιλογής. 1. Αν ο σκύλος ακουμπήσει ένα κόκαλο τότε το κόκαλο εξαφανίζεται και ο παίκτης κερδίζει 10 πόντους.

Δομή Επιλογής. 1. Αν ο σκύλος ακουμπήσει ένα κόκαλο τότε το κόκαλο εξαφανίζεται και ο παίκτης κερδίζει 10 πόντους. Τάξη : Α Λυκείου Λογισμικό : Scratch Ενδεικτική Διάρκεια : 45 λεπτά Δομή Επιλογής Μία από τις πιο σημαντικές δομές που χρησιμοποιείται στον προγραμματισμό είναι η δομή επιλογής. Η δομή αυτή μας δίνει την

Διαβάστε περισσότερα

του προγράμματος diagrama_rohs.zip )

του προγράμματος diagrama_rohs.zip ) έκδοση 3.20 ( κατέβασμα του προγράμματος diagrama_rohs.zip ) Το πρόγραμμα αυτό γράφτηκε όχι να γίνει μια γλώσσα προγραμματισμού, αλλά να γίνει ένα εργαλείο για την εισαγωγή των μαθητών στον προγραμματισμό.

Διαβάστε περισσότερα

Μάθημα 1: Εισαγωγή. Κάνε κλικ την εντολή "κινήσου" και με το ποντίκι πατημένο μετέφερε τη στη περιοχή σεναρίων.

Μάθημα 1: Εισαγωγή. Κάνε κλικ την εντολή κινήσου και με το ποντίκι πατημένο μετέφερε τη στη περιοχή σεναρίων. Μάθημα : Εισαγωγή 2 Κάνε κλικ την εντολή "κινήσου" και με το ποντίκι πατημένο μετέφερε τη στη περιοχή σεναρίων. Κάνοντας διπλό κλικ στην εντολή μπορείς να δεις ότι η γάτα κινείται στη σκηνή. Επίλεξε την

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Έλεγχος ισότητας για Strings: Διαβάζουμε το String option και θέλουμε ένα loop να συνεχίσει

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Εργαστήριο 2 Βασικοί Τύποι Μεταβλητών Java

Διαβάστε περισσότερα

1ο μέρος 1. Φτιάχνουμε την πίστα. Μια ενδεικτική πίστα φαίνεται παρακάτω:

1ο μέρος 1. Φτιάχνουμε την πίστα. Μια ενδεικτική πίστα φαίνεται παρακάτω: 1ο μέρος 1. Φτιάχνουμε την πίστα. Μια ενδεικτική πίστα φαίνεται παρακάτω: Εικόνα 1 Για να φτιάξουμε το τείχος επιλέγουμε καταρχήν την καρτέλα Γραφικά (κάτω δεξιά) και έπειτα το γεμάτο τετράγωνο από την

Διαβάστε περισσότερα

3 ο εργαστήριο Scratch for NinjaCoders

3 ο εργαστήριο Scratch for NinjaCoders 3 ο εργαστήριο Scratch for NinjaCoders Τίτλος εφαρμογής: Space Invaders (Διαστημικοί εισβολείς) Περιγραφή στόχων, σενάριο εφαρμογής, παρουσίαση scratch, μεταβλητές, συμβάντα, προγραμματιστικές δομές 0

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα με πίνακες. Constructors. Υλοποίηση Στοίβας Στην άσκηση αυτή θα υλοποιήσετε μια κλάση Geometric η οποία διαχειρίζεται μια γεωμετρική ακολουθία ακεραίων

Διαβάστε περισσότερα

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά

Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά Γλώσσα Προγραμματισμού C++ Εισαγωγή - Μια πρώτη ματιά Βασικά χαρακτηριστικά αναπτύχθηκε ως επέκταση της C το 1979 υπερσύνολο της C γλώσσα γενικού σκοπού, γρήγορη, Αντικειμενοστραφής προγραμματισμός (Object

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων Constructors

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργία Κλάσεων και Αντικειμένων Constructors ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργία Κλάσεων και Αντικειμένων Constructors Κλάσεις και αντικείμενα Ορισμός κλάσης: class

Διαβάστε περισσότερα

«Αβάκιο» Οδηγός χρήσης Μικρόκοσμου που αποτελείται από τις ψηφίδες Καμβάς, Χελώνα, Γλώσσα, Μεταβολέας, Χρώματα.

«Αβάκιο» Οδηγός χρήσης Μικρόκοσμου που αποτελείται από τις ψηφίδες Καμβάς, Χελώνα, Γλώσσα, Μεταβολέας, Χρώματα. «Αβάκιο» Οδηγός χρήσης Μικρόκοσμου που αποτελείται από τις ψηφίδες Καμβάς, Χελώνα, Γλώσσα, Μεταβολέας, Χρώματα. Πώς θα δουλέψεις με το Χελωνόκοσμο την πρώτη φορά 1. Θα χρησιμοποιήσεις το αριστερό πλήκτρο

Διαβάστε περισσότερα

α) Πώς παίρνουμε αποφάσεις στην καθημερινή μας ζωή; Συμπληρώσετε τον παρακάτω πίνακα: τότε

α) Πώς παίρνουμε αποφάσεις στην καθημερινή μας ζωή; Συμπληρώσετε τον παρακάτω πίνακα: τότε 1. ΠΕΡΙΓΡΑΦΗ ΚΑΙ ΑΝΑΛΥΣΗ ΦΥΛΛΩΝ ΕΡΓΑΣΙΑΣ (Ή ΚΑΙ ΑΛΛΟΥ ΔΙΔΑΚΤΙΚΟΥ ΥΛΙΚΟΥ) ΑΞΙΟΛΟΓΗΣΗ ΤΩΝ ΜΑΘΗΤΩΝ ΦΥΛΛΟ ΕΡΓΑΣΙΑΣ 1 «Η δομή επιλογής εάν» Δραστηριότητα 1 α) Πώς παίρνουμε αποφάσεις στην καθημερινή μας ζωή;

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται και τυπώνει τη θέση του.

Διαβάστε περισσότερα

Δομές ελέγχου ροής προγράμματος

Δομές ελέγχου ροής προγράμματος Δομές ελέγχου ροής προγράμματος Υπάρχουν δύο είδη δομών ελέγχου ροής (control flow): Οι δομές επιλογής και Οι δομές επανάληψης Δομές ελέγχου ροής προγράμματος Είδος δομής Δομές επιλογής Δομή ελέγχου ροής

Διαβάστε περισσότερα

2.1 Αντικειµενοστρεφής προγραµµατισµός

2.1 Αντικειµενοστρεφής προγραµµατισµός 2.1 Αντικειµενοστρεφής προγραµµατισµός Στον αντικειµενοστρεφή προγραµµατισµό (object oriented programming, OOP) ένα πρόγραµµα υπολογιστή είναι ένα σύνολο αλληλεπιδρώντων αντικειµένων. Μπορεί να ειπωθεί

Διαβάστε περισσότερα

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

Πλάνο Παρουσίασης. Στο δεύτερο μέρος θα μελετήσουμε τον σχεδιασμό και κώδικα πίσω από την εφαρμογή. Pong Game Project Επιβλέπων:Δασυγένης Μηνάς Φοιτητής:Τερζή Αναστασία Ιούνιος 2018,Κοζάνη Τμήμα Μηχανικών πληροφορικής και τηλεπικοινωνιών Εργαστήριο Ψηφιακών Συστημάτων και Αρχιτεκτονικής Υπολογιστών http://arch.icte.uowm.gr/

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα ως ορίσματα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα ως ορίσματα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα ως ορίσματα Αντικείμενα ως ορίσματα Μπορούμε να περνάμε αντικείμενα ως ορίσματα σε μία μέθοδο όπως οποιαδήποτε άλλη μεταβλητή Οποιαδήποτε κλάση

Διαβάστε περισσότερα

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Εισαγωγή στη γλώσσα προγραμματισμού JAVA Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Το πρώτο φλιτζάνι Java Λίστα με τα απαραίτητα Το πρώτο μου πρόγραμμα(hello World) Συνεχίζοντας

Διαβάστε περισσότερα

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Σκοπός Να αναπτύξουν ένα πρόγραμμα όπου θα επαναλάβουν τα βήματα ανάπτυξης μιας παραθυρικής εφαρμογής.

Διαβάστε περισσότερα

στο μένες ις ε ε μειώ αι σ σύντο Game Maker 8.1 Ν του συ

στο μένες ις ε ε μειώ αι σ σύντο Game Maker 8.1 Ν του συ στο μένες βασισ δουλειά ις ε σ ε μειώ αι σ μες ση e Maker κ γελιδάκη σύντο am Αγ G υ υ ο ο τ ίκ l Ν Tutoria νάδελφου του συ Game Maker 8.1 Η βασική ιδέα πάνω στην οποία βασίζεται το περιβάλλον ανάπτυξης

Διαβάστε περισσότερα

2 ο Εργαστήριο Αλληλεπίδραση και Animation

2 ο Εργαστήριο Αλληλεπίδραση και Animation 2 ο Εργαστήριο Αλληλεπίδραση και Animation Τα προγράμματα που έχουμε δει μέχρι τώρα εκτελούν τον κώδικά τους μία φορά και το πρόγραμμα σταματάει. Ένα πρόγραμμα που δημιουργεί animation ή ανταποκρίνεται

Διαβάστε περισσότερα

Οδηγίες Χρήσης Εφαρμογής

Οδηγίες Χρήσης Εφαρμογής Οδηγίες Χρήσης Εφαρμογής SciFY - Οκτώβριος 2016 Περιεχόμενα Εισαγωγή 3 Οδηγίες για τον εργοθεραπευτή / φροντιστή 4 Αρχική Οθόνη 4 Δημιουργία προφίλ 5 Ρυθμίσεις Επικοινωνίας 6 Ρυθμίσεις Ψυχαγωγίας 9 Ρυθμίσεις

Διαβάστε περισσότερα

Ανακύκλωσε το Computer Game σε Scratch

Ανακύκλωσε το Computer Game σε Scratch Ανακύκλωσε το Computer Game σε Scratch Καλλιόπη Σατραζέμη¹, Μαρία Χαραλαμπίδου², Κλεοπάτρα Χαριστέ³, Λαμπρινή Χρυσή 4 1 kalliopaki_s@yahoo.gr 2 maraki98_xar@hotmail.gr 3 kleo.xar@hotmail.gr 4 lamprini1998@gmail.com

Διαβάστε περισσότερα

Τα αλφαριθμητικά αποτελούνται από γράμματα, λέξεις ή άλλους χαρακτήρες (π.χ. μήλο, Ιούλιος 2009, You win!).

Τα αλφαριθμητικά αποτελούνται από γράμματα, λέξεις ή άλλους χαρακτήρες (π.χ. μήλο, Ιούλιος 2009, You win!). ΑΛΦΑΡΙΘΜΗΤΙΚΑ Τα αλφαριθμητικά αποτελούνται από γράμματα, λέξεις ή άλλους χαρακτήρες (π.χ. μήλο, Ιούλιος 2009, You win!). Αποθηκεύονται σε μεταβλητές ή σε λίστες (όπως ή ). Μπορείτε να ενώσετε δυο αλφαριθμητικά

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα 1 Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται και τυπώνει τη θέση του.

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors, equals, tostring ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Constructors, equals, tostring Constructors (Δημιουργοί) O Constructor είναι μια «μέθοδος» η οποία καλείται όταν δημιουργούμε το αντικείμενο

Διαβάστε περισσότερα

ΠΛΗΚΤΡΟΛΟΓΙΟ. Η ελληνική διάταξη πλήκτρων είναι η παρακάτω (δεν υπάρχουν άλλες διατάξεις για το ελληνικό αλφάβητο):

ΠΛΗΚΤΡΟΛΟΓΙΟ. Η ελληνική διάταξη πλήκτρων είναι η παρακάτω (δεν υπάρχουν άλλες διατάξεις για το ελληνικό αλφάβητο): ΠΛΗΚΤΡΟΛΟΓΙΟ Διατάξεις χαρακτήρων Το πληκτρολόγιο περιλαμβάνει όλους τους χαρακτήρες κάποιου αλφάβητου π.χ. του λατινικού, και πολλά σημεία στίξης, διακριτικά σύμβολα, και βοηθητικά πλήκτρα. Ανάλογα με

Διαβάστε περισσότερα

Δημιουργία παιχνιδιού με το Game Maker

Δημιουργία παιχνιδιού με το Game Maker Δημιουργία παιχνιδιού με το Game Maker Τρέξε το Game Maker σε Simple mode.η επιλογή βρίσκεται στο μενού File και επιλέξτε Advanced Mode και αποεπιλέξτε το: Στο παιχνίδι που θα δημιουργήσουμε θα έχουμε

Διαβάστε περισσότερα

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java

Εαρινό. Ύλη εργαστηρίου, Ασκήσεις Java Εξάμηνο Μάθημα Τίτλος 2017 2018 Εαρινό Αντικειμενοστραφής Προγραμματισμός Ι Ύλη εργαστηρίου, Ασκήσεις Java Ημερομηνία Εργαστήριο 5 ο Α. Ύλη εργαστηρίου 5.1 Έννοιες αντικειμενοστραφούς προγραμματισμού,

Διαβάστε περισσότερα

Τιμή Τιμή. σκορ. ζωές

Τιμή Τιμή. σκορ. ζωές Εισαγωγή στην έννοια των μεταβλητών Οι μεταβλητές Θα πρέπει να έχετε παρατηρήσει ότι έχουμε φτιάξει τόσα παιχνίδια μέχρι αυτό το σημείο και δεν έχουμε αναφερθεί πουθενά για το πως μπορούμε να δημιουργήσουμε

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στη Python Νικόλαος Ζ. Ζάχαρης Αναπληρωτής

Διαβάστε περισσότερα

Δημιουργώντας ένα παιχνίδι λαβυρίνθου(maze game) με εμπόδια

Δημιουργώντας ένα παιχνίδι λαβυρίνθου(maze game) με εμπόδια Φύλλο Εργασίας Δημιουργώντας ένα παιχνίδι λαβυρίνθου(maze game) με εμπόδια Δραστηριότητα 1η Σε αυτό το φύλλο εργασίας θα δημιουργήσουμε βήμα βήμα ένα παιχνίδι με λαβύρινθο (maze game) με εμπόδια. Το παιχνίδι

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 Αριθμητική στο δυαδικό σύστημα (γενικά) Συμπληρωματικά για δυαδικό σύστημα Η πρόσθεση στηρίζεται στους κανόνες: 0 + 0 = 0, 0 + 1 = 1, 1

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ. Πρώτη Σειρά ασκήσεων Ημερομηνία Παράδοσης: 24 Απριλίου 2018, 12 μ.μ.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ. Πρώτη Σειρά ασκήσεων Ημερομηνία Παράδοσης: 24 Απριλίου 2018, 12 μ.μ. ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ & ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΛΥ212/ΜΥΥ205 Τεχνικές Αντικειμενοστρεφούς Προγραμματισμού Πρώτη Σειρά ασκήσεων Ημερομηνία Παράδοσης: 24 Απριλίου 2018, 12 μ.μ. Στην άσκηση

Διαβάστε περισσότερα

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις Γαβαλάς Δαμιανός

Διαβάστε περισσότερα

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών

Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Εργαστήριο Δομημένος Προγραμματισμός (C#) Τμήμα Μηχανολογίας Νικόλαος Ζ. Ζάχαρης Καθηγητής Εφαρμογών Σκοπός Να καταλάβουν την διαφορά ανάμεσα σε τοπικές και καθολικές μεταβλητές. Nα κάνουν αποσφαλμάτωση

Διαβάστε περισσότερα

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. I (JAVA) Ονοματεπώνυμο: Α. Μ.: + ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. + 1 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 2/3) 2 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 3/3)

Διαβάστε περισσότερα

4 η Εργαστηριακή Άσκηση

4 η Εργαστηριακή Άσκηση 4 η Εργαστηριακή Άσκηση Σκοπός της εργαστηριακής άσκησης είναι η δημιουργία μιας εφαρμογής πολλαπλών καρτελών με κοινή σύνδεση σε Βάση Δεδομένων και προβολή δεδομένων από διαφορετικούς πίνακες της ίδιας

Διαβάστε περισσότερα

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

Διαβάστε περισσότερα

Οδηγίες Εργασίας 1 Facility-Game

Οδηγίες Εργασίας 1 Facility-Game ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ 2013-2014 Οδηγίες Εργασίας 1 Facility-Game Ανανεωμένος για την έκδοση v0.62 του FacilityGameProject Διδάσκων : Eπικ.Καθηγητής Παύλoς Εφραιμίδης Υπεύθυνος Φροντιστηρίου : Σωτήρης Γυφτόπουλος

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ Κων. Κόκκινος Μεταβλητές-1 Οι μεταβλητές αποτελούν θέσεις μνήμης στις οποίες αποθηκεύονται τιμές αντίστοιχες

Διαβάστε περισσότερα

Αγώνες αυτοκινήτου Παιχνίδι για 2 παίκτες

Αγώνες αυτοκινήτου Παιχνίδι για 2 παίκτες Αγώνες αυτοκινήτου Παιχνίδι για 2 παίκτες Άνοιξε το προγραμματιστικό περιβάλλον του Scratch 2.0. Επίλεξε το Σκηνικό. Επίλεξε την καρτέλα Υπόβαθρα. Επίλεξε το πινέλο, αύξησε το πλάτος της γραμμής του πινέλου

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java III Ισότητα Strings class StringTest public static void main(string args[]) String x1 = "java"; String y1 = "java"; System.out.println("1.

Διαβάστε περισσότερα

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις 2 Ανατομία ενός προγράμματος

Διαβάστε περισσότερα

Χρήσιμες Λειτουργίες των. Windows 7

Χρήσιμες Λειτουργίες των. Windows 7 Χρήσιμες Λειτουργίες των Windows 7 1 Περιεχόμενα Εισαγωγή... 3 Χαρακτηριστικά των Windows 7... 3 1. Θέματα (themes):... 3 1.1. Aero Peek... 4 1.2. Aero Shake:... 4 1.3. Aero Snap:... 4 1.4. Αero Flip:...

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα ΔΗΜΙΟΥΡΓΩΝΤΑΣ ΔΙΚΕΣ ΜΑΣ ΚΛΑΣΕΙΣ ΚΑΙ ΑΝΤΙΚΕΙΜΕΝΑ Κλάση Μια κλάση είναι μία αφηρημένη περιγραφή αντικειμένων με

Διαβάστε περισσότερα

Πώς εισάγουμε μια νέα έννοια χρησιμοποιώντας το εργαλείο Create

Πώς εισάγουμε μια νέα έννοια χρησιμοποιώντας το εργαλείο Create Inspiration 8 IE Β ήμα προς Βήμα Για μαθητές Έναρξη Προγράμματος Inspiration 1. Κάνουμε κλικ στο κουμπί Start, επιλέγουμε Programs και κάνουμε κλικ στο Inspiration 8 IE. 2. Στην αρχική οθόνη του προγράμματος

Διαβάστε περισσότερα

To περιβάλλον Ανάπτυξης εφαρμογών της Visual Basic 2008 Express Edition

To περιβάλλον Ανάπτυξης εφαρμογών της Visual Basic 2008 Express Edition To περιβάλλον Ανάπτυξης εφαρμογών της Visual Basic 2008 Express Edition Πίνακας Περιεχομένων To περιβάλλον Ανάπτυξης εφαρμογών της Visual Basic 2008 Express Edition... 1 Εκτέλεση του περιβάλλοντος ανάπτυξης

Διαβάστε περισσότερα

Εργαστήριο 1-1 η Άσκηση - Ανάλυση

Εργαστήριο 1-1 η Άσκηση - Ανάλυση Εργαστήριο 1-1 η Άσκηση - Ανάλυση Εκφώνηση: Δημιουργείστε εφαρμογή σε Java Swing με χρήση του IDE NetBeans όπου θα παρουσιάζεται ποιο κουμπί πατήθηκε. Η εφαρμογή θα μοιάζει ως εξής: Πρώτο Βήμα: Αρχική

Διαβάστε περισσότερα

Γ ΓΥΜΝΑΣΙΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΗ ΓΛΩΣΣΑ MicroWorlds Pro

Γ ΓΥΜΝΑΣΙΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΜΕ ΤΗ ΓΛΩΣΣΑ MicroWorlds Pro Για να μπορέσουμε να εισάγουμε δεδομένα από το πληκτρολόγιο αλλά και για να εξάγουμε εμφανίσουμε αποτελέσματα στην οθόνη του υπολογιστή χρησιμοποιούμε τις εντολές Εισόδου και Εξόδου αντίστοιχα. Σύνταξη

Διαβάστε περισσότερα

Δημιουργία μιας εφαρμογής Java με το NetBeans

Δημιουργία μιας εφαρμογής Java με το NetBeans Δημιουργία μιας εφαρμογής Java με το NetBeans Για να δημιουργήσετε μια εφαρμογή Java πρέπει να ακολουθήσετε τα εξής βήματα : Αρχικά πρέπει να δημιουργηθεί ένα project το οποίο θα περιέχει όλα τα αρχεία

Διαβάστε περισσότερα

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth.

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth. Το πρόγραμμα HelloWorld.java Σχόλια στη Java HelloWorld Παύλος Εφραιμίδης pefraimi ee.duth.gr Java Το πρόγραμμα HelloWorld 1 Java Το πρόγραμμα HelloWorld 2 Σχόλια στη Java ΗγλώσσαJava υποστηρίζει

Διαβάστε περισσότερα

Games: Εξοικείωση με το περιβάλλον του Game Maker μέσα από την κατασκευή ενός παιχνιδιού

Games: Εξοικείωση με το περιβάλλον του Game Maker μέσα από την κατασκευή ενός παιχνιδιού Games: Εξοικείωση με το περιβάλλον του Game Maker μέσα από την κατασκευή ενός παιχνιδιού Εκτιμώμενη διάρκεια: Τέσσερις διδακτικές ώρες Ένταξη στο πρόγραμμα σπουδών Στο νέο Πρόγραμμα Σπουδών του Γυμνασίου

Διαβάστε περισσότερα

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. I (JAVA) Ονοματεπώνυμο: Α. Μ.: + ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. + 1 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 2/3) 2 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 3/3)

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Constructors ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Constructors Μαθήματα από το lab Ένα πρόγραμμα αποτελείται από διάφορες κλάσεις και αντικείμενα αυτών των κλάσεων. Μία από τις κλάσεις

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II Strings Η κλάση String είναι προκαθορισμένη κλάση της Java που μας επιτρέπει να χειριζόμαστε αλφαριθμητικά. Ο τελεστής + μας επιτρέπει

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 Κατασκευαστές (Constructors) Ειδικός τύπος μεθόδων, οι οποίες: - είναι public και έχουν το ίδιο όνομα με αυτό της κλάσης - χρησιμοποιούνται για να αρχικοποιήσουν κάποιες

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα 1 Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται πάνω σε μία ευθεία πάντα

Διαβάστε περισσότερα

Προγραμματισμός. Το περιβάλλον του scratch

Προγραμματισμός. Το περιβάλλον του scratch Προγραμματισμός Η τέχνη του να μπορούμε να γράφουμε τα δικά μας προγράμματα ονομάζεται προγραμματισμός. Γενικότερα ως προγραμματιστικό πρόβλημα θεωρούμε κάθε ζήτημα που τίθεται προς επίλυση, κάθε κατάσταση

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αντικείμενα ως ορίσματα Εισαγωγή στις αναφορές Αντικείμενα ως ορίσματα Μπορούμε να περνάμε αντικείμενα ως ορίσματα σε μία μέθοδο όπως οποιαδήποτε άλλη μεταβλητή

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008 - Παράδειγμα με switch (το οποίο δείχνει επίσης πότε σε μια άσκηση χρησιμοποιούμε user-input και System.out.println() για έξοδο και πότε χρησιμοποιούμε είσοδο σε μέθοδο

Διαβάστε περισσότερα

ΕΠΙΣΚΟΠΗΣΗ ΕΦΑΡΜΟΓΩΝ ΓΡΑΦΕΙΩΝ

ΕΠΙΣΚΟΠΗΣΗ ΕΦΑΡΜΟΓΩΝ ΓΡΑΦΕΙΩΝ Υπουργείο Υγείας και Κοινωνικής Αλληλεγγύης Επιχειρησιακό Πρόγραμμα «Υγεία-Πρόνοια» Κ.Ε.Κ. Σωματείου «ΕΡΜΗΣ» Πρόγραμμα Κατάρτισης Εργαζόμενων σε Υπηρεσίες Κοινωνικής Φροντίδας στις Νέες Τεχνολογίες ΘΕΜΑΤΙΚΗ

Διαβάστε περισσότερα

αντίστοιχο γεγονός. Όταν όντως το κουμπί

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

Διαβάστε περισσότερα

Λίγα λόγια από το συγγραφέα Κεφάλαιο 1: Microsoft Excel Κεφάλαιο 2: Η δομή ενός φύλλου εργασίας... 26

Λίγα λόγια από το συγγραφέα Κεφάλαιο 1: Microsoft Excel Κεφάλαιο 2: Η δομή ενός φύλλου εργασίας... 26 Περιεχόμενα Λίγα λόγια από το συγγραφέα... 7 Κεφάλαιο 1: Microsoft Excel 2002... 9 Κεφάλαιο 2: Η δομή ενός φύλλου εργασίας... 26 Κεφάλαιο 3: Δημιουργία νέου βιβλίου εργασίας και καταχώριση δεδομένων...

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα 1 Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται πάνω σε μία ευθεία πάντα

Διαβάστε περισσότερα

Μεταβλητές. Για περισσότερες λεπτομέρειες πάνω στις μεταβλητές θα ήταν χρήσιμο να διαβάσεις το

Μεταβλητές. Για περισσότερες λεπτομέρειες πάνω στις μεταβλητές θα ήταν χρήσιμο να διαβάσεις το Τάξη : Α Λυκείου Λογισμικό : Scratch Ενδεικτική Διάρκεια : 45 λεπτά Μεταβλητές Όλα όσα έμαθες στα προηγούμενα φυλλάδια είναι απαραίτητα για να υλοποιήσεις απλές εφαρμογές. Ωστόσο αν θέλεις να δημιουργήσεις

Διαβάστε περισσότερα

Πώς το λένε Computer game στο Scratch

Πώς το λένε Computer game στο Scratch Πώς το λένε Computer game στο Scratch Μιχαηλία Γκαλλέ¹, Χριστόδουλος Σατραζέμης², 1 Μαθήτρια Γ Τάξης, 2 ο Γυμνάσιο Ευόσμου mixaelagalle@gmail.com 2 Μαθητής Γ Τάξης, 2 ο Γυμνάσιο Ευόσμου linosatra@gmail.com

Διαβάστε περισσότερα

Ο Προγραμματισμός στην Πράξη

Ο Προγραμματισμός στην Πράξη Ο Προγραμματισμός στην Πράξη Το περιβάλλον προγραμματισμού MicroWorlds Pro Μενού επιλογών Γραμμή εργαλείων Επιφάνεια εργασίας Περιοχή Καρτελών Κέντρο εντολών Καρτέλες Οι πρώτες εντολές Εντολές εμφάνισης

Διαβάστε περισσότερα

Εργαστήριο 2 - Άσκηση - Ανάλυση

Εργαστήριο 2 - Άσκηση - Ανάλυση Εργαστήριο 2 - Άσκηση - Ανάλυση Εκφώνηση: Δημιουργείστε την εφαρμογή Αριθμήτηριο σε Java Swing με χρήση NetBeans ακολουθώντας τις παρακάτω οδηγίες. 1. Η εφαρμογή θα σχεδιασθεί σε ένα εξωτερικό υποδοχέα

Διαβάστε περισσότερα

ΟΔΗΓΙΕΣ ΓΙΑ ΤΟ ΠΑΙΧΝΙΔΙ.

ΟΔΗΓΙΕΣ ΓΙΑ ΤΟ ΠΑΙΧΝΙΔΙ. ΟΔΗΓΙΕΣ ΓΙΑ ΤΟ ΠΑΙΧΝΙΔΙ. Το πρώτο πράγμα που βλέπουμε μόλις ξεκινάμε το παιχνίδι είναι μια λίστα με όλα τα διαθέσιμα βίντεο με τα οποία μπορούμε να εξασκηθούμε. Σε αυτή περιλαμβάνονται επίσης πληροφορίες

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ 447 ΥΠΟΛΟΓΙΣΤΙΚΗ ΟΡΑΣΗ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ 447 ΥΠΟΛΟΓΙΣΤΙΚΗ ΟΡΑΣΗ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΕΠΛ 447 ΥΠΟΛΟΓΙΣΤΙΚΗ ΟΡΑΣΗ PROJECT Pac-Man game controlled with Kinect Αβραάμια Κοντού 990412 Νικόλας Τσεκούρας 1021973 Σκεύη Ματσεντίδου 982267 1 ΠΕΡΙΕΧΟΜΕΝΑ 1. Εισαγωγή 3-4 2. Επεξήγηση

Διαβάστε περισσότερα

Δομές Δεδομένων. Σημειώσεις από το εργαστήριο για τον χειρισμό του προγράμματος Eclipse. 5ο εξάμηνο. v1.0

Δομές Δεδομένων. Σημειώσεις από το εργαστήριο για τον χειρισμό του προγράμματος Eclipse. 5ο εξάμηνο. v1.0 Δομές Δεδομένων 5ο εξάμηνο Σημειώσεις από το εργαστήριο για τον χειρισμό του προγράμματος Eclipse v1.0 Τις σημειώσεις κράτησαν και διαμόρφωσαν σε word οι: Κονδύλη Γαλήνη, ΑΜ 5576 Μάλλιου Χριστίνα, ΑΜ 5413

Διαβάστε περισσότερα

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #4 ο : Αποσφαλμάτωση (debugging), μετατροπές τύπων, δημιουργία τυχαίων αριθμών, λήψη εισόδου από χρήστη Λογικά λάθη public class ShowLogicErrors

Διαβάστε περισσότερα