Soccer-Fun functioneel programmeren met voetbal

Slides:



Advertisements
Verwante presentaties
De gemiddelde leerling
Advertisements

TRAININGSVOORBEREIDING
Zaalhockey
Aantal spelers : keeper Datum :
BRIDGE Vervolgcursus Vervolg op starterscursus Bridgeclub Schiedam ‘59 info: Maandagavond: 19: – of
= 1 uur vóór zonsondergang uur
‘SMS’ Studeren met Succes deel 1
M3F-MATEN - Tijd en Snelheid
Kinderwerking Stefania & Yves
Paulus' eerste brief aan Korinthe (20) 23 januari 2013 Bodegraven.
28 juni 2009 Paëllanamiddag 1 Paëllanamiddag 28 juni 2009 Voorbereiding vrijdagavond (Loopt automatisch - 7 seconden)
Werkwoorden d t dt.
NEDERLANDS WOORD BEELD IN & IN Klik met de muis
Beter afspelen.
WAAROM? Onderzoek naar het meest geschikte traject voor de verlenging tot in Sint-Niklaas van het bestaande fietspad naast de Stekense Vaart en de Molenbeek.
BRIDGE Vervolgcursus Vervolg op starterscursus Bridgeclub Schiedam ‘59 info: Maandagavond: 19: – of
November 2013 Opinieonderzoek Vlaanderen – oktober 2013 Opiniepeiling Vlaanderen uitgevoerd op het iVOXpanel.
Global e-Society Complex België - Regio Vlaanderen e-Regio Provincie Limburg Stad Hasselt Percelen.
7 april 2013 Zoetermeer 1. 1Korinthe Maar, zal iemand zeggen, hoe worden de doden opgewekt? En met wat voor lichaam komen zij? 2.
Thema HACCP
Ronde (Sport & Spel) Quiz Night !
De Bijbel lezen: waarom en hoe?
Gemaakt door: Sven Jetten
1 verschillen met het veld zaalregels
Nooit meer onnodig groen? Luuk Misdom, IT&T
BZ voor de Klas 3 juni 2010.
Passie - Verrijzenis Arcabas
FOD VOLKSGEZONDHEID, VEILIGHEID VAN DE VOEDSELKETEN EN LEEFMILIEU 1 Kwaliteit en Patiëntveiligheid in de Belgische ziekenhuizen anno 2008 Rapportage over.
Elke 7 seconden een nieuw getal
Extra vragen voor Havo 3 WB
Regelmaat in getallen … … …
Regelmaat in getallen (1).
1 introductie 3'46” …………… normaal hart hond 1'41” ……..
Oefeningen F-toetsen ANOVA.
Soccer-Fun functioneel programmeren met voetbal
Wat levert de tweede pensioenpijler op voor het personeelslid? 1 Enkele simulaties op basis van de weddeschaal B1-B3.
Wie het kleine niet eert ... (quarks, leptonen,….)
In dit vakje zie je hoeveel je moet betalen. Uit de volgende drie vakjes kan je dan kiezen. Er is er telkens maar eentje juist. Ken je het juiste antwoord,
1 7 nov Rijnsburg 7 nov Rijnsburg. 2 Hebreeën 7 15 En nog veel duidelijker wordt het, als naar het evenbeeld van Melchisedek een andere priester.
13 maart 2014 Bodegraven 1. 1Korinthe Want gelijk het lichaam één is en vele leden heeft, en al de leden van het lichaam, hoe vele ook, een lichaam.
Pasen & Pinksteren op één dag!
Werken aan Intergenerationele Samenwerking en Expertise.
Geometrie en topologie Rob Kromwijk, 26 juli 2012.
Afrika: Topo nakijken en leren.
Elektriciteit 1 Les 4 Visualisatie van elektrische velden
User management voor ondernemingen en organisaties
PLAYBOY Kalender 2006 Dit is wat mannen boeit!.
ZijActief Koningslust 10 jaar Truusje Trap
0 HJ Breen Wisselbeker Seizoen Veld en Zaal minst gepasseerde keeper/keepster Geldrop, dinsdag 19 juni 2012.
verschillen met het veld
Spelregeltest Oliveo Handbal
Test je geheugen
17/08/2014 | pag. 1 Fractale en Wavelet Beeldcompressie Les 5.
17/08/2014 | pag. 1 Fractale en Wavelet Beeldcompressie Les 3.
Ontwikkelingspatroon scheidsrechter
De financiële functie: Integrale bedrijfsanalyse©
23 september 2014 Niels Vanmarcke
aangename ont - moeting
Inhoud Methodiek Aanwijzingen
1 Zie ook identiteit.pdf willen denkenvoelen 5 Zie ook identiteit.pdf.
12 sept 2013 Bodegraven 1. 2  vooraf lezen: 1Kor.7:12 t/m 24  indeling 1Korinthe 7  1 t/m 9: over het huwelijk  10 t/m 16: over echtscheiding  16.
13 november 2014 Bodegraven 1. 2 de vorige keer: 1Kor.15:29-34 indien er geen doden opgewekt worden...  vs 29: waarom dopen?  vs.30-32: waarom doodsgevaren.
2020 Boer of mineralenmanager? 1. Evenwicht? Bodem & vakmanschap Info DMS % %
Zondag 7 HC Franeker 21 februari 2010
15 december 2013 Rotterdam 1. Caesarea – een haven, een poort 2.
23 mei 2013 Bodegraven vanaf hoofdstuk 6: hoofdst.1: de wijsheid van de wereld hoofdst.2: de wijsheid van God hoofdst.3: Gods akker en Gods bouwwerk.
Transcript van de presentatie:

Soccer-Fun functioneel programmeren met voetbal 17 oktober 2011 Soccer-Fun functioneel programmeren met voetbal http://www.cs.ru.nl/P.Achten/SoccerFun/SoccerFun.html

Wat is SoccerFun? Programmeer het brein van een voetballer Maak een team van elf voetballers Voetbal tegen andere teams en kijk of je het beste team hebt Geïnspireerd op een uitspraak van Johan Cruijff 16 december 2013

Voetbalbrein Johan Cruijff (De Tijd, 7 mei 1982): 17 oktober 2011 Voetbalbrein Johan Cruijff (De Tijd, 7 mei 1982): “Als ik een bal aan de voet heb die ik wil afspelen, dan moet ik rekening houden met mijn bewaker, de wind, het gras, de snelheid waarmee de spelers lopen. Wij berekenen de kracht waarmee je moet schoppen en de richting waarin in ééntiende seconde. De computer doet daar twee minuten over!”

Voetbalbrein Johan Cruijff (De Tijd, 7 mei 1982): “Als ik een bal aan de voet heb die ik wil afspelen, dan moet ik rekening houden met mijn bewaker, de wind, het gras, de snelheid waarmee de spelers lopen. Wij berekenen de kracht waarmee je moet schoppen en de richting waarin in ééntiende seconde. De computer doet daar twee minuten over!” Deze berekening is een functie: brein :: Bewaker Wind Gras Team  (Kracht, Richting)

SoccerFun

Een model van voetbal 16 december 2013

“Ons” brein is ook een functie naam argumenten resultaat minibrein :: (BrainInput, Memory) -> (BrainOutput,Memory) functie-type minibrein (invoer, geheugen) | conditie1 = (uitvoer1,geheugen1) | conditie2 = (uitvoer2,geheugen2) | otherwise = (uitvoern,geheugenn) functie- voorschrift where resultaat = berekening deel-berekeningen 15 januari 2014 Proefstudeerdag

Dimensies – voetbalveld fwidth (64m-75m) flength (100m – 110m) :: FootballField = { fwidth :: FieldWidth, flength :: FieldLength} :: FieldWidth :== Metre :: FieldLength :== Metre m :: Real -> Metre

Eenheden Eenheid Nederlands SoccerFun Type lengte 0 m 50,4 m (m 0.0) of: zero Metre tijd 0 min 45 min (minutes 0.0) (minutes 45.0) Minutes hoek 0° 90° 180° 270° (degree 0) (degree 90) (degree 180) (degree 270) of: (rad (0.5*pi)) of: (rad pi) of: (rad (1.5*pi)) Angle snelheid 0 m/s 10 m/s (ms 0.0) (ms 10.0) Velocity 16 december 2013

Dimensies – voetbalveld North West East South :: Edge = North | South :: Home= West | East

Dimensies – veldcoördinaten py zero px :: Position = { px :: Metre, py :: Metre }

Dimensies – hoogte pz :: Position3D = {pxy :: Position, pz :: Metre}

Dimensies – richting :: Angle degree :: Int -> Angle (rad (0.5*pi)) (degree 180) (rad pi) (degree 270) (rad (1.5*pi)) (degree 0) (rad 0.0) :: Angle degree :: Int -> Angle rad :: Real -> Angle pi :== 3.1415926535897932384

Dimensies – bewegingssnelheid :: Speed = {direction :: Angle, velocity :: Velocity } :: Speed3D = {vxy :: Speed, vz :: Velocity } :: Velocity ms :: Real -> Velocity

Dimensies – voetballer :: Footballer = E.m: { playerID :: FootballerID, nose :: Angle , pos :: Position, speed :: Speed , name :: String, length :: Length , stamina :: Stamina, health :: Health , skills :: MajorSkills , effect :: Maybe FootballerEffect , brain :: Brain (FootballerAI m) m } 16 december 2013

Breinfuncties maken + = 16 december 2013

“Ons” brein is anders :: Footballer = E.m: { … 17 oktober 2011 “Ons” brein is anders :: Footballer = E.m: { … , brain :: Brain (FootballerAI m) m } :: Brain ai m = { memory :: m, ai :: ai } :: FootballerAI m :== (BrainInput, m) -> (BrainOutput, m) mijnBrein :: (BrainInput, Memory) -> (BrainOutput, Memory)

Wat weet een voetballer? :: BrainInput = { referee :: [RefereeAction] , football :: FootballState , others :: [Footballer] , me :: Footballer } :: FootballState = Free Football | GainedBy FootballerID :: Football = { ballPos :: Position3D, ballSpeed :: Speed3D }

Wat kan een voetballer doen? :: BrainOutput :== FootballerAction :: FootballerAction = Move Speed Angle | Feint FeintDirection | GainBall | CatchBall | KickBall Speed3D | HeadBall Speed3D | Tackle FootballerID Velocity

Voorbeeld 1: sta stil halt :: (BrainInput, m) -> (BrainOutput, m) halt (input, m) = (Move zero zero, m) module FootballerFunctions bevat een aantal miniscule breinfuncties

Voorbeeld 2: loop naar punt fix point diff (input=:{me}, m) | d < diff = halt (input, m) | otherwise = (move, m) where d = dist me point a = bearing zero me point r = bearing me.nose me point move = Move {direction=a,velocity=ms (toReal d)} r

Voorbeeld 2: loop naar punt afterfix doe_dan point diff (input=:{me}, m) | d < diff = doe_dan (input, m) | otherwise = (move, m) where d = dist me point a = bearing zero me point r = bearing me.nose me point move = Move {direction=a,velocity=ms (toReal d)} r generaliseer fix met vervolgactie

Voorbeeld 3: speel bal naar punt kick point (input=:{me}, m) | d <= maxKickReach me = (kick, m) | otherwise = halt (input, m) where ball = getBall input d = dist me ball v = dist me point a = bearing zero me point kick = KickBall {vxy = {direction=a,velocity=ms (toReal v)} ,vz = ms 1.0 }

Voorbeeld 4: volg bal ... en de mini-effies? track_ball diff (input,m) = fix (getBall input).ballPos.pxy diff (input,m) ... en de mini-effies? miniFF diff (input,m) = afterfix trap_bal_in_doel (getBall input).ballPos.pxy diff (input,m)

Scheidsrechter Scheidsrechter observeert spelverloop Beslissingen van de scheidsrechter moeten worden opgevolgd spelhervatting speelhelft Scheidsrechter detecteert overtredingen 16 december 2013

Scheidsrechter Overtredingen: leidt tot reprimande / spelhervatting: :: BrainInput = { referee :: [RefereeAction], … } Overtredingen: hands, incorrect balbezit, gevaarlijk spel, onsportief gedrag leidt tot reprimande / spelhervatting: waarschuwing, gele kaart, rode kaart bij rode kaart verwijdering uit team 16 december 2013

Scheidsrechter Spelhervatting: :: BrainInput = { referee :: [RefereeAction], … } Spelhervatting: vrije trap, inworp, doeltrap, aftrap, corner team die deze moet nemen: Home (West / East) het andere team is in overtreding als deze toch de actie uitvoert 16 december 2013

Scheidsrechter Signaleren goal: daarna aftrap door andere team (other) :: BrainInput = { referee :: [RefereeAction], … } Signaleren goal: :: RefereeAction = … | Goal Home | … daarna aftrap door andere team (other) 16 december 2013

Scheidsrechter Signaleren helftwissel: :: BrainInput = { referee :: [RefereeAction], … } Signaleren helftwissel: :: RefereeAction = … | EndHalf | … dit moeten spelers zelf bijhouden brein (input=:{referee},m=:{helft2}) = (…, {m & helft2 = helft2 || einde1}) where einde1 = any isEndHalf referee 16 december 2013

Teambuilding 16 december 2013

Teambuilding Team bestaat uit 11 spelers: Keeper heeft nummer 1 :: Footballer = {playerID :: FootballerID, …} :: FootballerID = { clubName :: ClubName , playerNr :: PlayersNumber } Keeper heeft nummer 1 Veldspelers hebben nummers 2.. 16 december 2013

Teambuilding Module Team bevat alle (oefen)teams allAvailableTeams :: [Home FootballField -> Team] Team krijgt bij aanvang wedstrijd te horen: waar de eerste helft gespeeld wordt hoe groot het voetbalveld is mijnteam :: Home FootballField -> Team :: Team :== [Footballer] 16 december 2013

Braintraining

Training 1: slalommen Scheidsrechter: RefereeCoach_Slalom Tegenstander: Opp_Slalom_W/E Jezelf: Student Slalom_E/W Module: Team_Student_Slalom_Assignment.icl

Training 1: slalommen slalom om de tegenstanders heen schop bal in doel tegenstander

Training 2: bal overspelen Scheidsrechter: RefereeCoach Passing Tegenstander: Opp_Passing_W/E Jezelf: Student Passing_E/W Module: Team_Student_Passing_Assignment.icl

Training 2: bal overspelen

Training 3: zinvol aanspelen Scheidsrechter: RefereeCoach DeepPass Tegenstander: Opp_Deep_Pass_W/E Jezelf: Student Deep Pass_E/W Module: Team_Student_DeepPass_Assignment.icl

Training 3: zinvol aanspelen Ontvang bal. Speel bal naar speler 3 zonder dat tegen-stander de bal kan bemachtigen.

Training 4: doel afschermen Scheidsrechter: RefereeCoach Keeper Tegenstander: Opp_Keeper_W/E Jezelf: Student Keeper_E/W Module: Team_Student_Keeper_Assignment.icl

Training 4: doel afschermen Keeper schermt centrum doel af. Tegenstanders spelen bal over en trachten goal te scoren.

Meer lezen: Overzicht Soccer-Fun: zie SoccerFun\doc\quickstart_SoccerFun.pdf De Soccer-Fun home site: http://www.cs.ru.nl/P.Achten/SoccerFun/SoccerFun.html