Υλοποίηση Πληροφοριακών Συστημάτων - Προγραμματισμός σε Java (robocode) - know your enemy - Βασίλειος Καρακόιδας

Σχετικά έγγραφα
Εγκατάσταση λογισμικού και αναβάθμιση συσκευής Device software installation and software upgrade

Section 8.3 Trigonometric Equations

BECAUSE WE REALLY WANT TO KNOW WHAT YOU THINK ABOUT SCHOOL AND YOUR GARDEN. Fairly true If I decide to learn something hard, I can.

3.4 SUM AND DIFFERENCE FORMULAS. NOTE: cos(α+β) cos α + cos β cos(α-β) cos α -cos β

AVL-trees C++ implementation

Μηχανική Μάθηση Hypothesis Testing

LESSON 14 (ΜΑΘΗΜΑ ΔΕΚΑΤΕΣΣΕΡΑ) REF : 202/057/34-ADV. 18 February 2014

2 Composition. Invertible Mappings

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ - ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΕΠΛ 133: ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΕΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΕΡΓΑΣΤΗΡΙΟ 3 Javadoc Tutorial

derivation of the Laplacian from rectangular to spherical coordinates

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

C.S. 430 Assignment 6, Sample Solutions

Phys460.nb Solution for the t-dependent Schrodinger s equation How did we find the solution? (not required)

Finite Field Problems: Solutions

9.09. # 1. Area inside the oval limaçon r = cos θ. To graph, start with θ = 0 so r = 6. Compute dr

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

Δομές Δεδομένων - Εργαστήριο 2. Λίστες

Αναφορά εργασίας. Χατζητζάνος Ευάγγελος

Εργαστήριο Επεξεργασίας Πληροφορίας και Υπολογισμών Τομέας Ηλεκτρονικής και Υπολογιστών. ΤΗΜΜΥ Α.Π.Θ Πέμπτη 11 / 12 / 2014 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

Εργαστήριο 9. Styling with Javascript

HOMEWORK 4 = G. In order to plot the stress versus the stretch we define a normalized stretch:

Προγραµµατισµός ΙΙ. Ηγλώσσααντικειµενοστραφούς. ιδάσκων ηµήτριος Κατσαρός, Τµ. Μηχανικών Η/Υ, Τηλεπικοινωνιών & ικτύων Πανεπιστήµιο Θεσσαλίας

Δυναμική μνήμη με πίνακες και λίστες

Προγραμματισμός Ι. Κλάσεις και Αντικείμενα. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Exercises 10. Find a fundamental matrix of the given system of equations. Also find the fundamental matrix Φ(t) satisfying Φ(0) = I. 1.

Partial Differential Equations in Biology The boundary element method. March 26, 2013

Chapter 2 * * * * * * * Introduction to Verbs * * * * * * *

MR. DICKSON'S METHOD FOR BAND Book Two

Η αντίσταση στην ανθρωπιστική ψυχοθεραπεία

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

Modbus basic setup notes for IO-Link AL1xxx Master Block

Adjectives. Describing the Qualities of Things. A lesson for the Paideia web-app Ian W. Scott, 2015

The Simply Typed Lambda Calculus

CHAPTER 25 SOLVING EQUATIONS BY ITERATIVE METHODS

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

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

Δοκιμή και Αποσφαλμάτωση Testing and Debugging

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

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

Section 7.6 Double and Half Angle Formulas

4 Συλλογές Αντικειμένων

Variational Wavefunction for the Helium Atom

The challenges of non-stable predicates

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

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

Βασίλης Χριστοφίδης Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 21 Σεπτεµβρίου 2012

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

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

ΕΡΓΑΣΙΑ 4 - Αντικειμενοστραφής Υλοποίηση του Συστήματος Κατανομής Θέσεων σε Προγράμματα Σπουδών

Πώς μπορεί κανείς να έχει έναν διερμηνέα κατά την επίσκεψή του στον Οικογενειακό του Γιατρό στο Ίσλινγκτον Getting an interpreter when you visit your

How to register an account with the Hellenic Community of Sheffield.

Συστήματα Διαχείρισης Βάσεων Δεδομένων

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

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

Διδάσκων: Κωνσταντίνος Κώστα Διαφάνειες: Δημήτρης Ζεϊναλιπούρ

Section 9.2 Polar Equations and Graphs

SPEEDO AQUABEAT. Specially Designed for Aquatic Athletes and Active People

Code Breaker. TEACHER s NOTES

Περιγραφή συστήματος «BankAccount»

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

Homework 3 Solutions

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

department listing department name αχχουντσ ϕανε βαλικτ δδσϕηασδδη σδηφγ ασκϕηλκ τεχηνιχαλ αλαν ϕουν διξ τεχηνιχαλ ϕοην µαριανι

(a,b) Let s review the general definitions of trig functions first. (See back cover of your book) sin θ = b/r cos θ = a/r tan θ = b/a, a 0

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

άσκηση Hide UI Elements 7.2 Try and Catch

Right Rear Door. Let's now finish the door hinge saga with the right rear door

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

goodbye kyrie frount / goodbye κ?ριε φρ?υντ

( )( ) ( ) ( )( ) ( )( ) β = Chapter 5 Exercise Problems EX α So 49 β 199 EX EX EX5.4 EX5.5. (a)

Εργαστήριο 5 Αναδρομική διεργασία εισαγωγής καινούριου κόμβου σε ΔΔΑ με αλφαβητική σειρά

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

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

Προγραμματισμός Ι. Πίνακες, Δείκτες, Αναφορές και Δυναμική Μνήμη. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Εισαγωγή στον Προγραμματισμό

Στο εστιατόριο «ToDokimasesPrinToBgaleisStonKosmo?» έξω από τους δακτυλίους του Κρόνου, οι παραγγελίες γίνονται ηλεκτρονικά.

Dynamic types, Lambda calculus machines Section and Practice Problems Apr 21 22, 2016

Η εντολή if-else. Η απλή μορφή της εντολής if είναι η ακόλουθη: if (συνθήκη) { Η γενική μορφή της εντολής ifelse. εντολή_1; εντολή_2;..

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

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

B. Ενσωμάτωση Ιθαγενών Μεθόδων

Συµβολοσειρές - Strings

Οδηγίες Αγοράς Ηλεκτρονικού Βιβλίου Instructions for Buying an ebook

Δομές Δεδομένων - Εργαστήριο 5. Ουρές Προτεραιότητας

Εργαστήριο Java. Διδάσκουσα: Εργαστηριακοί Συνεργάτες:

Εργαστήριο Επεξεργασίας Πληροφορίας και Υπολογισμών Τομέας Ηλεκτρονικής και Υπολογιστών. ΤΗΜΜΥ Α.Π.Θ Πέμπτη 19 / 12 / 2016 ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ

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

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

Solutions to Exercise Sheet 5

Δημιουργία Λογαριασμού Διαχείρισης Business Telephony Create a Management Account for Business Telephony

Advanced Subsidiary Unit 1: Understanding and Written Response

Αλγόριθμοι Ταξινόμησης Μέρος 3

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 19/5/2007

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

Quantifying the Financial Benefits of Chemical Inventory Management Using CISPro

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

ΠΡΟΣΟΜΟΙΩΣΗ ΘΕΩΡΙΑ 1. H αρχική οθόνη του Open Roberta lab

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

CYTA Cloud Server Set Up Instructions

Transcript:

Υλοποίηση Πληροφοριακών Συστημάτων - Προγραμματισμός σε Java (robocode) - know your enemy - Βασίλειος Καρακόιδας bkarak@aueb.gr

Περιεχόμενα Εργασία 2 - Robocode Οι αντίπαλοι πράκτορες Ανάλυση πρακτόρων Tracker

Εργασία ΙΙ Δημιουργία ενός πράκτορα για την πλατφόρμα Robocode Χαρακτηριστικά: Αυτόνομος Να επιτίθεται σε αντίπαλους πράκτορες Να εντοπίζει αντίπαλους πράκτορες

Εργασία ΙΙ (2) 2 παραδοτέα Μεταγλωττισμένη έκδοση του πράκτορα (agent-<κωδ>.jar) Πηγαίος κώδικας (source- <κωδ>.zip)

Εργασία II (3) Παράδοση μέσω του ηλεκτρονικού συστήματος παράδοσης εργασιών http://www.dmst.aueb.gr/hlektronikh.htm 11/12/2007-31/1/2008 (7 μέρες...)

Αρένα Μάχης

Αντίπαλοι πράκτορες Sample.SittingDuck Sample. Fire Sample. Tracker Sample. SpinBot

Αντίπαλοι πράκτορες (2)

Αντίπαλοι πράκτορες (3) Sample.SittingDuck Ανενεργός πράκτορας Κάθεται ακίνητος και περιμένει να ηττηθεί

Αντίπαλοι πράκτορες (4) Sample.Fire Κάθεται ακίνητος Περιστρέφει το πυροβόλο 360 μοίρες Αν χτυπηθεί μετακινείται

Αντίπαλοι πράκτορες (6) Sample. SpinBot Κάνει κύκλους (360 μοίρες) Αν εντοπίσει αντίπαλο πθροβολεί, αλλά συνεχίζει την πορεία του

Αντίπαλοι πράκτορες (5) Sample. Tracker Περιστρέφει το κανόνι μέχρι να εντοπίσει αντίπαλο πράκτορα Όταν τον εντοπίσει μετακινείται κοντά και πυροβολεί

Ανάλυση πράκτορα (1) Sample. Tracker Ο πηγαίος κώδικας αποτελείται από μία κλάση (Tracker) Χρησιμοποιεί δύο βοηθητικές συναρτήσεις και τρία γεγονότα

Ανάλυση πράκτορα (2) Η βασική συνάρτηση είναι η run() Τα γεγονότα που χρησιμοποιεί: onscannedrobot() onhitrobot() onwin()

Ανάλυση πράκτορα (3) int count = 0; // Keeps track of how long we've // been searching for our target double gunturnamt; // How much to turn our gun when searching String trackname; // Name of the robot we're currently tracking public void run() { // Set colors setbodycolor(new Color(128, 128, 50)); setguncolor(new Color(50, 50, 20)); setradarcolor(new Color(200, 200, 70)); setscancolor(color.white); setbulletcolor(color.blue); // Prepare gun trackname = null; // Initialize to not tracking anyone setadjustgunforrobotturn(true); // Keep the gun still when we turn gunturnamt = 10; // Initialize gunturn to 10 [...]

Ανάλυση πράκτορα (4) while (true) { // turn the Gun (looks for enemy) turngunright(gunturnamt); // Keep track of how long we've been looking count++; // If we've haven't seen our target for 2 turns, look left if (count > 2) { gunturnamt = -10; // If we still haven't seen our target for 5 turns, look right if (count > 5) { gunturnamt = 10; // If we *still* haven't seen our target after 10 turns, find another target if (count > 11) { trackname = null;

Ανάλυση πράκτορα (5) public void onhitrobot(hitrobotevent e) { // Only print if he's not already our target. if (trackname!= null &&!trackname.equals(e.getname())) { out.println("tracking " + e.getname() + " due to collision"); // Set the target trackname = e.getname(); // Back up a bit. // Note: We won't get scan events while we're doing this! // An AdvancedRobot might use setback(); execute(); gunturnamt = normalrelativeangle(e.getbearing() + (getheading() - getradarheading())); turngunright(gunturnamt); fire(3); back(50);

Ανάλυση πράκτορα (6.1) public void onscannedrobot(scannedrobotevent e) { // If we have a target, and this isn't it, return immediately // so we can get more ScannedRobotEvents. if (trackname!= null &&!e.getname().equals(trackname)) { return; // If we don't have a target, well, now we do! if (trackname == null) { trackname = e.getname(); out.println("tracking " + trackname); // This is our target. Reset count (see the run method) count = 0; [...]

Ανάλυση πράκτορα (6.2) // If our target is too far away, turn and move torward it. if (e.getdistance() > 150) { gunturnamt = normalrelativeangle(e.getbearing() + (getheading() - getradarheading())); turngunright(gunturnamt); // Try changing these to setturngunright, turnright(e.getbearing()); // and see how much Tracker improves... // (you'll have to make Tracker an AdvancedRobot) ahead(e.getdistance() - 140); return; // Our target is close. gunturnamt = normalrelativeangle(e.getbearing() + (getheading() - getradarheading())); turngunright(gunturnamt); fire(3); // Our target is too close! Back up. if (e.getdistance() < 100) { if (e.getbearing() > -90 && e.getbearing() <= 90) { back(40); else { ahead(40); scan();

Ανάλυση πράκτορα (4) /** * onwin: Do a victory dance */ public void onwin(winevent e) { for (int i = 0; i < 50; i++) { turnright(30); turnleft(30);