Overzicht Code Run time-structuur De Robot Bots Het ontwerp van een Bot
De Robot Robotspeelmiddag
Sjoerd Dost, Rick Sen
20 december 2011
Dost, Sen
De Robot
Overzicht Code Run time-structuur De Robot Bots Het ontwerp van een Bot
Inhoud 1
Overzicht Code Codestructuur
2
Run time-structuur
3
De Robot Geschiedenis
4
Bots Bot-interface Echobot Snorbot
5
Het ontwerp van een Bot Minimaal Optimaal Aan de slag! Dost, Sen
De Robot
Overzicht Code Run time-structuur De Robot Bots Het ontwerp van een Bot
Codestructuur
Wat hebben we gemaakt?
4 overkoepelende packages 2
bots - Bevat alle Bot-klassen, de ¨externe software” commands - Bevat het dynamische laad en ontlaad mechanisme
3
libs - Bevat code voor sommige libraries, en de Looker
4
mennov1 - Bevat de interne software van de robot
1
Dost, Sen
De Robot
Overzicht Code Run time-structuur De Robot Bots Het ontwerp van een Bot
Codestructuur
Wat zit er zoal in een Robot?
mennov1
src
Robot
bots
commands lib
TerminalClient JabberClient IrcClient BotHandler MennoV1 tekstbots: Echobot, Trollbot, Hog videobots: Gifbot, Snorbot, ZieJe Prologbot: WieIsHet TaiPanbot Twitterbot Load Unload SewerSender LaTeX Looker
Eterne Librabries Dost, Sen
De Robot
Overzicht Code Run time-structuur De Robot Bots Het ontwerp van een Bot
Welke klassen draaien er allemaal?
De volgende structuur geeft grofweg weer hoe de Robot werkt: MennoV1
Dost, Sen
De Robot
Overzicht Code Run time-structuur De Robot Bots Het ontwerp van een Bot
Welke klassen draaien er allemaal?
De volgende structuur geeft grofweg weer hoe de Robot werkt: MennoV1
Clients
Dost, Sen
De Robot
Overzicht Code Run time-structuur De Robot Bots Het ontwerp van een Bot
Welke klassen draaien er allemaal?
De volgende structuur geeft grofweg weer hoe de Robot werkt:
MennoV1
Clients
Dost, Sen
BotHandler
De Robot
Overzicht Code Run time-structuur De Robot Bots Het ontwerp van een Bot
Welke klassen draaien er allemaal? De volgende structuur geeft grofweg weer hoe de Robot werkt:
MennoV1
Clients
BotHandler
Bot 1
Bot 2
Bot 3
Dost, Sen
De Robot
Veel meer Bots
Overzicht Code Run time-structuur De Robot Bots Het ontwerp van een Bot
Dost, Sen
Geschiedenis
De Robot
Overzicht Code Run time-structuur De Robot Bots Het ontwerp van een Bot
Dost, Sen
Geschiedenis
De Robot
Overzicht Code Run time-structuur De Robot Bots Het ontwerp van een Bot
Bot-interface Echobot Snorbot
Bot-interface
Bot interface package bots ; /∗∗ ∗ ∗ @ a u t h o r V i n c e n t Tunru ∗ @ c a t e g o r y Framework ∗ ∗ Bot i n t e r f a c e , b o t s u s e d by MennoV1 n e e d t o i m p l e m e n t t h i s . ∗/ p u b l i c i n t e r f a c e Bot { p u b l i c a b s t r a c t S t r i n g ask ( S t r i n g input , S t r i n g user ) ; }
Dost, Sen
De Robot
Overzicht Code Run time-structuur De Robot Bots Het ontwerp van een Bot
Bot-interface Echobot Snorbot
Echobot
Echobot package bots ; /∗∗ ∗ ∗ @ a u t h o r V i n c e n t Tunru ∗ @category Bots ∗ ∗ A v e r y s i m p l e e x a m p l e b o t who i s b a s i c a l l y a p a r r o t . ∗/ p u b l i c c l a s s E c h o b o t i m p l e m e n t s Bot{ p u b l i c S t r i n g ask ( S t r i n g input , S t r i n g user ) { return input ; } }
Dost, Sen
De Robot
Overzicht Code Run time-structuur De Robot Bots Het ontwerp van een Bot
Bot-interface Echobot Snorbot
Snorbot
Dost, Sen
De Robot
Overzicht Code Run time-structuur De Robot Bots Het ontwerp van een Bot
Minimaal Optimaal Aan de slag!
Wat moet een bot minimaal hebben? 1) Een bot moet de interface Bot.java implementeren.
Dost, Sen
De Robot
Overzicht Code Run time-structuur De Robot Bots Het ontwerp van een Bot
Minimaal Optimaal Aan de slag!
Wat moet een bot minimaal hebben? 1) Een bot moet de interface Bot.java implementeren. 2) Dat is alleen de volgende methode:
Dost, Sen
De Robot
Overzicht Code Run time-structuur De Robot Bots Het ontwerp van een Bot
Minimaal Optimaal Aan de slag!
Wat moet een bot minimaal hebben? 1) Een bot moet de interface Bot.java implementeren. 2) Dat is alleen de volgende methode: De ask-methode public String ask(String input, String user){ ... }
Dost, Sen
De Robot
Overzicht Code Run time-structuur De Robot Bots Het ontwerp van een Bot
Minimaal Optimaal Aan de slag!
Wat moet een bot minimaal hebben? 1) Een bot moet de interface Bot.java implementeren. 2) Dat is alleen de volgende methode: De ask-methode public String ask(String input, String user){ ... } 3) Dus je krijgt een String input en een String user, en je moet een String teruggeven.
Dost, Sen
De Robot
Overzicht Code Run time-structuur De Robot Bots Het ontwerp van een Bot
Minimaal Optimaal Aan de slag!
Wat moet een bot minimaal hebben? 1) Een bot moet de interface Bot.java implementeren. 2) Dat is alleen de volgende methode: De ask-methode public String ask(String input, String user){ ... } 3) Dus je krijgt een String input en een String user, en je moet een String teruggeven. 4) Dat is precies wat we willen van een tekstuele bot.
Dost, Sen
De Robot
Overzicht Code Run time-structuur De Robot Bots Het ontwerp van een Bot
Minimaal Optimaal Aan de slag!
Wat willen we dat een bot heeft? Relevante uitvoer: het parseren van de input Parsering van woorden package bots ; p u b l i c c l a s s M i j n b o t i m p l e m e n t s Bot { p u b l i c S t r i n g ask ( S t r i n g input , S t r i n g user ) { S t r i n g s = ”” ; i f ( input . contains (” Hallo ”) || i n p u t . s t a r t s W i t h ( ” Hoi ” ) | | i n p u t . m a t c h e s ( ” [ Hh ] [ ( e y ) ( o i ) ( a l l o ) ] . ∗ ” ) ) { // R e g u l i e r e e x p r e s s i e ! s += ” Goedemorgen , ”+ u s e r ; } return s ; } )
Dost, Sen
De Robot
Overzicht Code Run time-structuur De Robot Bots Het ontwerp van een Bot
Minimaal Optimaal Aan de slag!
Wat willen we dat een bot heeft? Relevante uitvoer: parseren van getallen Parsering van getallen package bots ; p u b l i c c l a s s M i j n b o t i m p l e m e n t s Bot { p u b l i c S t r i n g ask ( S t r i n g input , S t r i n g user ) { S t r i n g s = ”” ; int getal ; i f ( i n p u t . m a t c h e s ( ” . ∗ [ 0 − 9 ] ∗ . ∗ ” ) ) { // R e g u l i e r e e x p r e s s i e ! f o r ( i n t i = 0 ; i < i n p u t . l e n g t h ( ) ; i ++){ try{ getal = Integer . parseInt ( input . substring ( i , input . length ( ) ) ) ; } ca tc h ( NumberFormatException f ) } } s = ” Ik l e e s het g e t a l : ” + g e t a l ; return s ; } }
Dost, Sen
De Robot
Overzicht Code Run time-structuur De Robot Bots Het ontwerp van een Bot
Minimaal Optimaal Aan de slag!
Wat willen we dat een bot heeft? Gebruiksvriendelijkheid door gescheiden sessies: hash-tables Hash-tables package bots ; p u b l i c c l a s s M i j n b o t i m p l e m e n t s Bot { p u b l i c S t r i n g ask ( S t r i n g input , S t r i n g user ) { S t r i n g s = ”” ; p r o t e c t e d H a s h t a b l e<S t r i n g , S t r i n g > v e l d e n ; v e l d e n = new H a s h t a b l e<S t r i n g , S t r i n g >(); s = ” Je l a a t s t e i n v o e r was : ” + v e l d e n . g e t ( u s e r ) ; v e l d e n . put ( user , i n p u t ) ; return s ; } }
Dost, Sen
De Robot
Overzicht Code Run time-structuur De Robot Bots Het ontwerp van een Bot
Minimaal Optimaal Aan de slag!
Aan de slag!
Bouw je eigen bot, of probeer onderstaande bot te bouwen: Een Echobot (ter oefening) Een Hogerlagerbot (ter oefening) Een Welkombot (verwelkomt iedereen die voor het eerst deze sessie of sinds 3 uur iets zegt, speciaal welkom voor nieuwe gebruikers) Een Schaakbot (gevorderd, but it would be awesome!)
Dost, Sen
De Robot