\hypertarget{embryo_pong_8edc-example}{}\doxysection{embryo\+\_\+pong.\+edc}
Super-\/simple Pong implementation in pure embryo.

Super-\/simple Pong implementation in pure embryo.


\begin{DoxyCodeInclude}{0}
\DoxyCodeLine{}
\DoxyCodeLine{\#define\ DEBUG\_ENABLE\ 0}
\DoxyCodeLine{\#define\ FPS\ 30}
\DoxyCodeLine{\#define\ COLOR\_BG\ 50\ 50\ 50\ 255}
\DoxyCodeLine{\#define\ COLOR\_FG\ 222\ 222\ 222\ 255}
\DoxyCodeLine{\#define\ PAD\_SIZE\ 60}
\DoxyCodeLine{\#define\ PAD\_DISTANCE\ 20}
\DoxyCodeLine{\#define\ BALL\_SPEED\ 5.0}
\DoxyCodeLine{\#define\ BALL\_SPEEDUP\ 0.1}
\DoxyCodeLine{\#define\ BALL\_SIZE\ 10}
\DoxyCodeLine{}
\DoxyCodeLine{}
\DoxyCodeLine{collections\ \{}
\DoxyCodeLine{\ \ \ group\ \{\ name:\ "{}main"{};}
\DoxyCodeLine{\ \ \ \ \ \ min:\ 500\ 300;}
\DoxyCodeLine{\ \ \ \ \ \ script\ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ public\ ballx,\ bally;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ public\ ballspeedx,\ ballspeedy;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ public\ player\_score,\ ai\_score;}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ public\ game\_reset()\ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ set\_int(ai\_score,\ 0);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ set\_int(player\_score,\ 0);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ set\_text(PART:"{}score1"{},\ "{}0"{});}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ set\_text(PART:"{}score2"{},\ "{}0"{});}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ game\_init();}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ }
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ public\ game\_init()\ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ set\_float(ballspeedx,\ 0.0);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ set\_float(ballspeedy,\ 0.0);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ set\_float(ballx,\ 100);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ set\_float(bally,\ 100);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ }
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ public\ start\_game()\ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ set\_float(ballspeedx,\ BALL\_SPEED);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ set\_float(ballspeedy,\ BALL\_SPEED\ *\ randf());}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ public\ player\_wins()\ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ new\ buf[16]}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ set\_int(player\_score,\ get\_int(player\_score)\ +\ 1);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ snprintf(buf,\ sizeof(buf),\ "{}\%d"{},\ get\_int(player\_score));}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ set\_text(PART:"{}score1"{},\ buf);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ game\_init();}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ public\ ai\_wins()\ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ new\ buf[16]}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ set\_int(ai\_score,\ get\_int(ai\_score)\ +\ 1);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ snprintf(buf,\ sizeof(buf),\ "{}\%d"{},\ get\_int(ai\_score));}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ set\_text(PART:"{}score2"{},\ buf);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ game\_init();}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ public\ game\_loop(count)\ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ count++;}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ /*\ get\ field\ geometry\ */}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ new\ fx,\ fy,\ fw,\ fh;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ get\_geometry(PART:"{}bg"{},\ fx,\ fy,\ fw,\ fh);}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ /*\ get\ mouse\ coords\ */}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ new\ mx,\ my;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ get\_mouse(mx,\ my);}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ /*\ get\ the\ ball\ info\ */}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ new\ Float:bx\ =\ get\_float(ballx);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ new\ Float:by\ =\ get\_float(bally);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ new\ Float:speedx\ =\ get\_float(ballspeedx);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ new\ Float:speedy\ =\ get\_float(ballspeedy);}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ /*\ move\ the\ player\ pad\ */}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ new\ pady\ =\ my\ -\/\ PAD\_SIZE\ /\ 2;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ if\ (pady\ <\ 0)\ pady\ =\ 0;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ else\ if\ (pady\ +\ PAD\_SIZE\ >\ fh)\ pady\ =\ fh\ -\/\ PAD\_SIZE;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ custom\_state(PART:"{}pad1"{},\ "{}default"{},\ 0.0);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ set\_state\_val(PART:"{}pad1"{},\ STATE\_REL1\_OFFSET,\ 20,\ pady);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ set\_state(PART:"{}pad1"{},\ "{}custom"{},\ 0.0);}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ /*\ move\ the\ AI\ pad\ */}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ new\ pad2y\ =\ round(by)\ -\/\ PAD\_SIZE\ /\ 2\ -\/\ BALL\_SIZE\ /\ 2;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ if\ (pad2y\ <\ 0)\ pad2y\ =\ 0;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ else\ if\ (pad2y\ +\ PAD\_SIZE\ >\ fh)\ pad2y\ =\ fh\ -\/\ PAD\_SIZE;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ custom\_state(PART:"{}pad2"{},\ "{}default"{},\ 0.0);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ set\_state\_val(PART:"{}pad2"{},\ STATE\_REL1\_OFFSET,\ 20,\ pad2y);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ set\_state(PART:"{}pad2"{},\ "{}custom"{},\ 0.0);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ }
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ /*\ calc\ new\ ball\ position\ */}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ bx\ +=\ speedx;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ by\ +=\ speedy;}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ /*\ check\ walls\ collision\ */}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ if\ (by\ <\ 0)}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ speedy\ =\ -\/speedy;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ by\ =\ 0;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ else\ if\ (by\ +\ BALL\_SIZE\ >\ fh)}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ speedy\ =\ -\/speedy;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ by\ =\ fh\ -\/\ BALL\_SIZE\ -\/\ 1;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ /*\ check\ player\ pad\ collision\ */}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ if\ ((speedx\ <\ 0)\ \&\&}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (bx\ <\ PAD\_DISTANCE\ +\ 10)\ \&\&\ (bx\ >\ 0)\ \&\&}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (by\ +\ BALL\_SIZE\ >\ pady)\ \&\&\ (by\ <\ pady\ +\ PAD\_SIZE))}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ new\ Float:dy\ =\ by\ -\/\ pady\ -\/\ PAD\_SIZE\ /\ 2;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ speedy\ +=\ dy\ /\ 10;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ speedx\ =\ -\/speedx\ +\ BALL\_SPEEDUP;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ /*\ check\ AI\ pad\ collision\ */}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ else\ if\ ((bx\ +\ BALL\_SIZE\ >\ fw\ -\/\ PAD\_DISTANCE\ -\/\ 10)\ \&\&}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (bx\ +\ BALL\_SIZE\ <\ fw)\ \&\&}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ (by\ +\ BALL\_SIZE\ >\ pad2y)\ \&\&\ (by\ <\ pad2y\ +\ PAD\_SIZE))}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ new\ Float:dy\ =\ by\ -\/\ pad2y\ -\/\ PAD\_SIZE\ /\ 2;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ speedy\ +=\ dy\ /\ 10;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ speedx\ =\ -\/speedx\ -\/\ BALL\_SPEEDUP;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ }
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ /*\ apply\ the\ new\ ball\ position\ */}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ custom\_state(PART:"{}ball"{},\ "{}default"{},\ 0.0);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ set\_state\_val(PART:"{}ball"{},\ STATE\_REL1\_OFFSET,\ round(bx),\ round(by));}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ set\_state(PART:"{}ball"{},\ "{}custom"{},\ 0.0);}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ /*\ update\ global\ vars\ */}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ set\_float(ballx,\ bx);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ set\_float(bally,\ by);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ set\_float(ballspeedx,\ speedx);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ set\_float(ballspeedy,\ speedy);}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ /*\ AI\ score\ a\ point\ */}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ if\ (bx\ <\ 0)\ ai\_wins();}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ /*\ player\ score\ a\ point\ */}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ if\ (bx\ +\ BALL\_SIZE\ >\ fw)\ player\_wins();}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ /*\ show\ debug\ info\ (if\ debug\ enabled)\ */}
\DoxyCodeLine{\#if\ DEBUG\_ENABLE}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ new\ \_buf[128];}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ snprintf(\_buf,\ sizeof(\_buf),}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ "{}loop:\%d\ \ [speed\ \%f\ \ \%f]\ [mouse:\ \%d\ \%d]\ [ball:\ \%f\ \%f]"{},}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ count,\ speedx,\ speedy,\ mx,\ my,\ bx,\ by);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ set\_text(PART:"{}dbg"{},\ \_buf);}
\DoxyCodeLine{\#endif}
\DoxyCodeLine{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ /*\ recall\ the\ loop\ in\ n\ seconds\ */}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ timer(1.0\ /\ FPS,\ "{}game\_loop"{},\ count);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \ \ \ parts\ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ part\ \{\ name:\ "{}bg"{};}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ type:\ RECT;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ description\ \{\ state:\ "{}default"{}\ 0.0;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ color:\ COLOR\_BG;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ part\ \{\ name:\ "{}net"{};}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ type:\ RECT;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ description\ \{\ state:\ "{}default"{}\ 0.0;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ color:\ COLOR\_FG;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ max:\ 10\ 9999;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ part\ \{\ name:\ "{}score1"{};}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ type:\ TEXT;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ description\ \{\ state:\ "{}default"{}\ 0.0;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ color:\ COLOR\_FG;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ rel2.relative:\ 0.5\ 0.5;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ rel2.offset:\ -\/20\ 0;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ text\ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ text:\ "{}0"{};}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ font:\ "{}Sans"{};}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ size:\ 50;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ align:\ 1.0\ 0.0;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\ }
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ part\ \{\ name:\ "{}score2"{};}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ type:\ TEXT;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ description\ \{\ state:\ "{}default"{}\ 0.0;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ color:\ COLOR\_FG;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ rel1.relative:\ 0.5\ 0.0;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ rel1.offset:\ 20\ 0;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ text\ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ text:\ "{}0"{};}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ font:\ "{}Sans"{};}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ size:\ 50;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ align:\ 0.0\ 0.0;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}\ }
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ part\ \{\ name:\ "{}pad1"{};}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ type:\ RECT;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ description\ \{\ state:\ "{}default"{}\ 0.0;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ color:\ COLOR\_FG;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ max:\ 10\ PAD\_SIZE;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ fixed:\ 1\ 1;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ align:\ 0.0\ 0.0;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ rel1.offset:\ PAD\_DISTANCE\ 0;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ part\ \{\ name:\ "{}pad2"{};}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ type:\ RECT;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ description\ \{\ state:\ "{}default"{}\ 0.0;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ color:\ COLOR\_FG;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ max:\ 10\ PAD\_SIZE;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ fixed:\ 1\ 1;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ align:\ 1.0\ 0.0;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ rel2.offset:\ -\/PAD\_DISTANCE\ 0;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ part\ \{\ name:\ "{}ball"{};}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ type:\ RECT;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ description\ \{\ state:\ "{}default"{}\ 0.0;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ color:\ COLOR\_FG;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ max:\ BALL\_SIZE\ BALL\_SIZE;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ fixed:\ 1\ 1;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ align:\ 0.0\ 0.0;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ rel1.offset:\ 100\ 100;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \#if\ DEBUG\_ENABLE}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ part\ \{\ name:\ "{}dbg"{};}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ type:\ TEXT;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ description\ \{\ state:\ "{}default"{}\ 0.0;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ color:\ 255\ 255\ 255\ 200;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ text\ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ font:\ "{}Sans"{};}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ size:\ 12;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ align:\ 1.0\ 1.0;}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \#endif}
\DoxyCodeLine{\ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \ \ \ programs\ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ /*\ on\ load:\ reset\ the\ game\ and\ start\ the\ game\ loop\ */}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ program\ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ signal:\ "{}load"{};}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ source:\ "{}"{};}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ script\ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ game\_reset();}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ timer(0.1\ ,\ "{}game\_loop"{},\ 0);}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ /*\ mouse\ left\ click:\ start\ the\ game,\ if\ not\ yet\ started\ */}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ program\ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ signal:\ "{}mouse,down,1"{};}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ source:\ "{}bg"{};}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ script\ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ if\ (get\_float(ballspeedx)\ ==\ 0.0)}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ start\_game();}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ /*\ mouse\ right\ click:\ restart\ the\ game*/}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ program\ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ signal:\ "{}mouse,down,3"{};}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ source:\ "{}bg"{};}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ script\ \{}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ game\_reset();}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \ \ \ \}}
\DoxyCodeLine{\ \ \ \}}
\DoxyCodeLine{\}}

\end{DoxyCodeInclude}
 