Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Project in XSB Prolog Επεξεργασία και Αναπαράσταση Γνώσης Άνοιξη 2009 Τμήμα Επιστήμης Υπολογιστών Πανεπιστημίου Κρήτης.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Project in XSB Prolog Επεξεργασία και Αναπαράσταση Γνώσης Άνοιξη 2009 Τμήμα Επιστήμης Υπολογιστών Πανεπιστημίου Κρήτης."— Μεταγράφημα παρουσίασης:

1 Project in XSB Prolog Επεξεργασία και Αναπαράσταση Γνώσης Άνοιξη 2009 Τμήμα Επιστήμης Υπολογιστών Πανεπιστημίου Κρήτης

2 Project Υλοποίηση παιχνιδιού: – ΤΑΒΛΙ μπορείτε να επιλεξετε μεταξύ των: –Πλακωτό –Φεύγα Ομαδες το πολύ τριών ατόμων Παράδωση: –30 Απριλίου 2009

3 “Τάβλι” Το ζητούμενο είναι να δημιουργήσετε –ένα παίκτη που θα παίζει ένα παιχνίδι τάβλι της επιλογής σας (πλακωτό, φεύγα). –ένα περιβάλλον σε XSB μέσα στο οποίο ένας χρήστης θα μπορεί να παίξει τάβλι με τον παίκτη που δημιουργήσατε Έλάχιστη απαίτηση του project είναι να τηρούνται όλοι οι κανόνες του παιχνιδίου που επιλέξατε (και από τους δύο παίκτες) –Το παιχνίδι ξεκινάει τυχαία από τον ένα από τους δύο πάικτες –Οι διπλές ζαριές ‘παίζονται’ ακριβώς όπως και οι άλλες (π.χ. στις εξάρες παίζονται 2 εξάρια αντί για 4) Αφού έχει καλυφθεί η ελάχιστη απαίτηση, –προσπαθήστε να δημιουργήσετε στρατηγικές επιλογής ‘έξυπνων’ κινήσεων για τον παίκτη που δημιουργήσατε. –Οι διπλές ζαριές να παίζονται κανονικά ( π.χ. στις εξάριες παίζονται 4 εξάρια) –Οι παίκτες στην αρχή ρίχνουν ζάρι και αυτός που έχει ρίξει το μεγαλύτερο παίζει τη ζαριά αυτή που είναι κάτω για πρώτη κίνηση ( π.χ. Άν φέρει 4 ο παίκτηςΑ και 5 ο παίκτηςΒ τότε θα παίξει πρώτος ο παίκτηςΒ τη ζαριά 5,4 )

4 Αναπαράσταση Γνώσης Πούλια, π.χ. b, w ή checker(b,1),…,checker(b,15),checker(w,1),…,checker(w,15) Παίκτες, π.χ. pc / user Ζάρια, π.χ. dice(3,4) Σειρά για να παίξει, π.χ. turn(pc) / turn(user) Κατάσταση παιχνιδού, π.χ. board([b,b],[],[],[],[],[w,w,w,w,w],[],[w,w,w],[],[],[],[b,b,b,b,b],[w,w,w,w,w],[],[],[],[b,b,b],[],[b,b,b,b,b],[],[],[],[],[w,w]) Μπάρα (για τις πόρτες), π.χ. bar([w,w]) Πούλια που έχει μαζέψει ο κάθε παίκτης, π.χ. collected(pc,[w,w]) / collected(pc,2) Κίνηση, π.χ. move(user,1,4,1,3) …

5 Αναπαράσταση Γνώσης Κάποιες δομές μπορεί επίσης να αναπαρασταθούν με τη χρήση ενός βοηθητικού κατηγορήματος, π.χ. pred(dice,[3,4]) pred(turn,pc) pred(board,[[w,w],[],…]) pred(bar,[w,w]) pred(collected,5)

6 Αναπαράσταση Γνώσης Χρειάζεται επίσης να αναπαραστήσουμε δύο τύπους κανόνων: –Κανόνες που ορίζουν τις επιτρεπτές κινήσεις σε ένα παιχνίδι. Αυτοί θα είναι κανόνες περιορισμού. –Κανόνες που ορίζουν στρατηγικές – οι κανόνες αυτοί θα ορίζουν τις «καλές» / «έξυπνες» κινήσεις στο παιχνίδι.

7 Ορισμός δυναμικών κατηγορημάτων Κάποιες ιδιότητες / δομές που αναμένουμε ότι θα αλλάζουν κατά την διάρκεια του παιχνιδιού θα πρέπει να ορίζονται δυναμικά. Παράδειγμα: turn(pc) ή pred(turn,pc) Για να μπορούμε να χειριστούμε μία δομή δυναμικά, στην αρχή του προγράμματος κάνουμε τη δήλωση: :- dynamic turn/1 ή :- dynamic pred/2. Στη συνέχεια μπορούμε να προσθέσουμε / αφαιρέσουμε δεδομένα από τη βάση γνώσης με χρήστη των: assert(…),retract(…) π.χ. coin_flip :- datime_setrand, random(1,101,I), (I>50 -> assert(turn(player)) ; assert(turn(cpu))), assert(lastcollect(player)). move(pc,A1,A2,B1,B2):- …,retract(turn(pc)),assert(turn(user)).

8 Εναλλακτική αναπαράσταση Πούλια του κάθε παίκτη user([1,1,12,12,12,12,12,17,17,17,19,19,19,19,19]). pc([24,24,13,13,13,13,13,8,8,8,6,6,6,6,6]). Κίνηση move(user,A1,A2):- user(L), valid(user,A1,A2), delete_ith(A1,L,Pos,RestList), append(RestList,A2,NewL), retract(user(L)), assert(user(NewL)), retract(turn(user)), assert(turn(pc)). Το move(user,A1,A2) αλλάζει τη θέση στο πούλι που βρίσκεται στην θέση Α1 της λίστας των πουλιών του χρήστη σε Α2 από Pos που ήταν πριν.

9 Αρχή του παιχνιδιού Στην αρχή μίας παρτίδας –Επιστρέφουμε στην αρχική κατάσταση το τάβλι –Ρίχνουμε κορώνα-γράμματα για να αποφασίσουμε ποιος θα παίξει πρώτος –Αυτός που παίζει πρώτος ρίχνει τα ζάρια και αν είναι ο pc, αποφασίζει με βάση τους κανόνες μία κίνηση την οποία και εκετλεί αν είναι ο user, εισάγει μία κίνηση την οποία το πρόγραμμα θα πρέπει να ελέγξει αν είναι έγκυρη και να την εκτελέσει –Αλλάζει η σειρά new_game :- initialize_board, coin_flip, turn(X), throw_dice, dice(D1,D2), (X =:= player -> execute_user_move; move(pc,A1,A2,B1,B2)).


Κατέβασμα ppt "Project in XSB Prolog Επεξεργασία και Αναπαράσταση Γνώσης Άνοιξη 2009 Τμήμα Επιστήμης Υπολογιστών Πανεπιστημίου Κρήτης."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google