2
0

gettingstarted.html 56 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107
  1. <HTML>
  2. <HEAD>
  3. <META NAME="GENERATOR" Content="Microsoft Developer Studio">
  4. <META HTTP-EQUIV="Content-Type" content="text/html; charset=iso-8859-1">
  5. <TITLE>Getting Started In Blitz BASIC</TITLE>
  6. </HEAD>
  7. <body bgcolor="#206060" text="#ffff00" link="#00ff00"
  8. vlink="#00ff00" alink="#00ff00">
  9. <style>
  10. <!--
  11. A:link {text-decoration: none;}
  12. A:visited {text-decoration: none;}
  13. -->
  14. </style>
  15. <h2><font color="#FFFF00" face="MS Sans Serif"><strong>Getting
  16. Started with BlitzBasic</strong></font></h2>
  17. <hr>
  18. <menu>
  19. <li><h4><a href="#first"><font face="MS Sans Serif">My First
  20. Program</font></a></h4>
  21. </li>
  22. <li><h4><a href="#variables"><font face="MS Sans Serif">Variables</font></a></h4>
  23. </li>
  24. <li><h4><a href="#firstgame"><font face="MS Sans Serif">My
  25. First Game</font></a></h4>
  26. </li>
  27. <li><h4><a href="#gettinggraphic"><font face="MS Sans Serif">Getting
  28. Graphic</font></a></h4>
  29. </li>
  30. <li><h4><a href="#doublebuffering"><font face="MS Sans Serif">Double
  31. Buffering</font></a></h4>
  32. </li>
  33. <li><h4><a href="#mysecondgame"><font face="MS Sans Serif">My
  34. Second Game</font></a></h4>
  35. </li>
  36. </menu>
  37. <hr>
  38. <h4><a name="first"><font color="#A7E3F5" face="MS Sans Serif">My
  39. First Program</font></a></h4>
  40. <p><font face="MS Sans Serif">After sampling some of the fine
  41. example programs included in the BlitzBasic package you are
  42. hopefully itching to try some of your own code.</font></p>
  43. <p><font face="MS Sans Serif">BlitzBasic is intended as both a
  44. friendly introduction to programming computers as well as a
  45. language capable of producing polished video game software.</font></p>
  46. <p><font face="MS Sans Serif">First up, the traditonal hello
  47. world program. A simple one line program that prints the message
  48. &quot;hello world&quot; on the screen. Select the File-New menu
  49. option and enter the following text:</font></p>
  50. <div align="center"><center>
  51. <table border="2" cellpadding="8" width="600" bgcolor="#006060">
  52. <tr>
  53. <td><font color="#FFE75F" size="2" face="blitz">Print</font><font
  54. color="#FFFFFF" size="2" face="blitz"> </font><font
  55. color="#00FF00" size="2" face="blitz">&quot;Hello World!&quot;</font></td>
  56. </tr>
  57. </table>
  58. </center></div>
  59. <p><font face="MS Sans Serif">If you press the F5 key to compile
  60. and run and a message greeting the world appears then </font><font
  61. color="#80FF00" face="MS Sans Serif">congratulations!</font><font
  62. face="MS Sans Serif"> you have just authored your first
  63. BlitzBasic program.</font></p>
  64. <p><font face="MS Sans Serif">The following code illustrates
  65. prompting the user of your program for some input.</font></p>
  66. <div align="center"><center>
  67. <table border="2" cellpadding="8" width="600" bgcolor="#006060">
  68. <tr>
  69. <td><font color="#FFFFFF" size="2" face="blitz">a</font><font
  70. color="#FFF0C8" size="2" face="blitz">=</font><font
  71. color="#FFE75F" size="2" face="blitz">Input</font><font
  72. color="#FFF0C8" size="2" face="blitz">(</font><font
  73. color="#00FF00" size="2" face="blitz">&quot;enter a
  74. number sweety:&quot;</font><font color="#FFF0C8" size="2"
  75. face="blitz">)</font><p><font color="#FFE75F" size="2"
  76. face="blitz">Print</font><font color="#FFFFFF" size="2"
  77. face="blitz"> </font><font color="#00FF00" size="2"
  78. face="blitz">&quot;the value of a is &quot;</font><font
  79. color="#FFFFFF" size="2" face="blitz"> </font><font
  80. color="#FFF0C8" size="2" face="blitz">+ </font><font
  81. color="#FFFFFF" size="2" face="blitz">a</font></p>
  82. </td>
  83. </tr>
  84. </table>
  85. </center></div>
  86. <p><font face="MS Sans Serif">Note: see how we add text and an
  87. integer variable together to print them both on the same line.</font></p>
  88. <hr>
  89. <h4><a name="variables"><font color="#A7E3F5"
  90. face="MS Sans Serif">Variables</font></a></h4>
  91. <p><font face="MS Sans Serif">Variables in Blitz are used to
  92. store integers, floats and strings.</font></p>
  93. <p><font face="MS Sans Serif">The first time a float or a string
  94. variable is used in your program it must be denoted with # or $
  95. symbols .</font></p>
  96. <p><font face="MS Sans Serif">If the &quot;a=&quot; in the
  97. program is changed to &quot;a$=&quot; Blitz will treat a as a
  98. string variable which can then contain any text the user enters
  99. instead of the integer number it originally converted the user's
  100. reply into.</font></p>
  101. <div align="center"><center>
  102. <table border="2" cellpadding="8" width="600" bgcolor="#006060">
  103. <tr>
  104. <td><font color="#FFFFFF" size="2" face="blitz">a</font><font
  105. color="#FFF0C8" size="2" face="blitz">$=</font><font
  106. color="#FFE75F" size="2" face="blitz">Input</font><font
  107. color="#FFF0C8" size="2" face="blitz">(</font><font
  108. color="#00FF00" size="2" face="blitz">&quot;enter a
  109. number sweety:&quot;</font><font color="#FFF0C8" size="2"
  110. face="blitz">)</font><p><font color="#FFE75F" size="2"
  111. face="blitz">Print</font><font color="#FFFFFF" size="2"
  112. face="blitz"> </font><font color="#00FF00" size="2"
  113. face="blitz">&quot;the value of a is &quot;</font><font
  114. color="#FFFFFF" size="2" face="blitz"> </font><font
  115. color="#FFF0C8" size="2" face="blitz">+ </font><font
  116. color="#FFFFFF" size="2" face="blitz">a</font></p>
  117. </td>
  118. </tr>
  119. </table>
  120. </center></div>
  121. <p><font face="MS Sans Serif">Suggestion: change the &quot;a$=&quot;
  122. to &quot;a#=&quot; and enter the number 22.95. What's going on?</font></p>
  123. <hr>
  124. <h4><a name="firstgame"><font color="#A7E3F5"
  125. face="MS Sans Serif">My First Game</font></a></h4>
  126. <p><font face="MS Sans Serif">The following program gives the
  127. user 5 turns to guess the random number.</font></p>
  128. <div align="center"><center>
  129. <table border="2" cellpadding="8" width="600" bgcolor="#006060">
  130. <tr>
  131. <td><font color="#00FFFF" size="2" face="blitz">;
  132. guessing game</font><p><font color="#FFFFFF" size="2"
  133. face="blitz">turnsleft</font><font color="#FFF0C8"
  134. size="2" face="blitz">=</font><font color="#C8F0FF"
  135. size="2" face="blitz">5</font></p>
  136. <p><font color="#FFFFFF" size="2" face="blitz">sheep</font><font
  137. color="#FFF0C8" size="2" face="blitz">=</font><font
  138. color="#FFE75F" size="2" face="blitz">Rnd</font><font
  139. color="#FFF0C8" size="2" face="blitz">(</font><font
  140. color="#C8F0FF" size="2" face="blitz">20</font><font
  141. color="#FFF0C8" size="2" face="blitz">)</font></p>
  142. <p><font color="#FFE75F" size="2" face="blitz">While</font><font
  143. color="#FFF0C8" size="2" face="blitz"> (</font><font
  144. color="#FFFFFF" size="2" face="blitz">turnsleft</font><font
  145. color="#FFF0C8" size="2" face="blitz">&gt;</font><font
  146. color="#C8F0FF" size="2" face="blitz">0</font><font
  147. color="#FFF0C8" size="2" face="blitz">)</font></p>
  148. <blockquote>
  149. <p><font color="#FFFFFF" size="2" face="blitz">turnsleft</font><font
  150. color="#FFF0C8" size="2" face="blitz">=</font><font
  151. color="#FFFFFF" size="2" face="blitz">turnsleft</font><font
  152. color="#FFF0C8" size="2" face="blitz">-</font><font
  153. color="#C8F0FF" size="2" face="blitz">1</font></p>
  154. <p><font color="#FFFFFF" size="2" face="blitz">guess</font><font
  155. color="#FFF0C8" size="2" face="blitz">=</font><font
  156. color="#FFE75F" size="2" face="blitz">Input</font><font
  157. color="#FFF0C8" size="2" face="blitz">(</font><font
  158. color="#00FF00" size="2" face="blitz">&quot;guess how
  159. many sheep I have in my room:&quot;</font><font
  160. color="#FFF0C8" size="2" face="blitz">)</font></p>
  161. <p><font color="#FFE75F" size="2" face="blitz">If</font><font
  162. color="#FFF0C8" size="2" face="blitz"> </font><font
  163. color="#FFFFFF" size="2" face="blitz">guess</font><font
  164. color="#FFF0C8" size="2" face="blitz">&lt;</font><font
  165. color="#FFFFFF" size="2" face="blitz">sheep</font><font
  166. color="#FFF0C8" size="2" face="blitz"> </font><font
  167. color="#FFE75F" size="2" face="blitz">Then</font><font
  168. color="#FFF0C8" size="2" face="blitz"> </font><font
  169. color="#FFE75F" size="2" face="blitz">Print</font><font
  170. color="#FFF0C8" size="2" face="blitz"> </font><font
  171. color="#00FF00" size="2" face="blitz">&quot;more than
  172. that!&quot;</font></p>
  173. <p><font color="#FFE75F" size="2" face="blitz">If</font><font
  174. color="#FFF0C8" size="2" face="blitz"> </font><font
  175. color="#FFFFFF" size="2" face="blitz">guess</font><font
  176. color="#FFF0C8" size="2" face="blitz">&gt;</font><font
  177. color="#FFFFFF" size="2" face="blitz">sheep</font><font
  178. color="#FFF0C8" size="2" face="blitz"> </font><font
  179. color="#FFE75F" size="2" face="blitz">Then</font><font
  180. color="#FFF0C8" size="2" face="blitz"> </font><font
  181. color="#FFE75F" size="2" face="blitz">Print</font><font
  182. color="#FFF0C8" size="2" face="blitz"> </font><font
  183. color="#00FF00" size="2" face="blitz">&quot;oh, not
  184. that many!</font></p>
  185. <p><font color="#FFE75F" size="2" face="blitz">If</font><font
  186. color="#FFF0C8" size="2" face="blitz"> </font><font
  187. color="#FFFFFF" size="2" face="blitz">guess</font><font
  188. color="#FFF0C8" size="2" face="blitz">=</font><font
  189. color="#FFFFFF" size="2" face="blitz">sheep</font><font
  190. color="#FFF0C8" size="2" face="blitz"> </font><font
  191. color="#FFE75F" size="2" face="blitz">Then</font><font
  192. color="#FFF0C8" size="2" face="blitz"> </font><font
  193. color="#FFE75F" size="2" face="blitz">Exit</font></p>
  194. </blockquote>
  195. <p><font color="#FFE75F" size="2" face="blitz">Wend</font></p>
  196. <p><font color="#FFE75F" size="2" face="blitz">If</font><font
  197. color="#FFF0C8" size="2" face="blitz"> </font><font
  198. color="#FFFFFF" size="2" face="blitz">turnsleft</font><font
  199. color="#FFF0C8" size="2" face="blitz">=</font><font
  200. color="#C8F0FF" size="2" face="blitz">0</font><font
  201. color="#FFF0C8" size="2" face="blitz"> </font><font
  202. color="#FFE75F" size="2" face="blitz">Then</font><font
  203. color="#FFF0C8" size="2" face="blitz"> </font><font
  204. color="#FFE75F" size="2" face="blitz">Print</font><font
  205. color="#FFF0C8" size="2" face="blitz"> </font><font
  206. color="#00FF00" size="2" face="blitz">&quot;game over
  207. dude&quot; </font><font color="#FFE75F" size="2"
  208. face="blitz">Else</font><font color="#FFF0C8" size="2"
  209. face="blitz"> </font><font color="#FFE75F" size="2"
  210. face="blitz">Print</font><font color="#FFF0C8" size="2"
  211. face="blitz"> </font><font color="#00FF00" size="2"
  212. face="blitz">&quot;good guess!&quot;</font></p>
  213. </td>
  214. </tr>
  215. </table>
  216. </center></div>
  217. <blockquote>
  218. </blockquote>
  219. <p><font face="MS Sans Serif">There are three variables used in
  220. this program: turnsleft, sheep and guess.</font></p>
  221. <p><font face="MS Sans Serif">To begin with, turnsleft is set to
  222. 5 and sheep is set to a random number between 0 and 20. The
  223. program then enters a &quot;while&quot; loop asking the player to
  224. guess a number, and comparing their answer which is placed in the
  225. variable guess with the value in sheep.</font></p>
  226. <p><font face="MS Sans Serif">After playing the game a few times,
  227. you may notice that the number of sheep does not vary much. Try
  228. adding the following line to the top of the program to &quot;seed&quot;
  229. the random number generator using the time of day in milliseconds.</font></p>
  230. <div align="center"><center>
  231. <table border="2" cellpadding="8" width="600" bgcolor="#006060">
  232. <tr>
  233. <td><font color="#FFE75F" size="2" face="blitz">SeedRnd
  234. MilliSecs</font><font color="#FFF0C8" size="2"
  235. face="blitz">()</font></td>
  236. </tr>
  237. </table>
  238. </center></div>
  239. <p><font face="MS Sans Serif">Congratulations, you have just
  240. doubled the playability of the game with one line of code!</font></p>
  241. <hr>
  242. <h4><a name="gettinggraphic"><font color="#A7E3F5"
  243. face="MS Sans Serif">Getting Graphic</font></a></h4>
  244. <p><font face="MS Sans Serif">BlitzBasic is not designed for
  245. building text based application such as our initial guessing game.
  246. It is also not designed for building applications featuring
  247. friendly graphics user interfaces filled with windows and sliders.</font></p>
  248. <p><font face="MS Sans Serif">The only thing BlitzBasic has been
  249. designed for is the very serious business of video game
  250. development.</font></p>
  251. <p><font face="MS Sans Serif">The following program initializes a
  252. 640x480 video display then plots points at random positions until
  253. the user presses the escape key.</font></p>
  254. <div align="center"><center>
  255. <table border="2" cellpadding="8" width="600" bgcolor="#006060">
  256. <tr>
  257. <td><font color="#00FFFF" size="2" face="blitz">; getting
  258. graphic</font><p><font color="#FFE75F" size="2"
  259. face="blitz">Graphics</font><font color="#00FFFF"
  260. size="2" face="blitz"> </font><font color="#C8F0FF"
  261. size="2" face="blitz">640</font><font color="#FFF0C8"
  262. size="2" face="blitz">,</font><font color="#C8F0FF"
  263. size="2" face="blitz">480</font></p>
  264. <p><font color="#FFE75F" size="2" face="blitz">While</font><font
  265. color="#00FFFF" size="2" face="blitz"> </font><font
  266. color="#FFE75F" size="2" face="blitz">Not KeyDown</font><font
  267. color="#FFF0C8" size="2" face="blitz">(</font><font
  268. color="#C8F0FF" size="2" face="blitz">1</font><font
  269. color="#FFF0C8" size="2" face="blitz">)</font></p>
  270. <blockquote>
  271. <p><font color="#FFE75F" size="2" face="blitz">Plot</font><font
  272. color="#00FFFF" size="2" face="blitz"> </font><font
  273. color="#FFE75F" size="2" face="blitz">Rnd</font><font
  274. color="#FFF0C8" size="2" face="blitz">(</font><font
  275. color="#C8F0FF" size="2" face="blitz">640</font><font
  276. color="#FFF0C8" size="2" face="blitz">),</font><font
  277. color="#FFE75F" size="2" face="blitz">Rnd</font><font
  278. color="#FFF0C8" size="2" face="blitz">(</font><font
  279. color="#C8F0FF" size="2" face="blitz">480</font><font
  280. color="#FFF0C8" size="2" face="blitz">)</font></p>
  281. </blockquote>
  282. <p><font color="#FFE75F" size="2" face="blitz">Wend</font></p>
  283. </td>
  284. </tr>
  285. </table>
  286. </center></div>
  287. <p><font face="MS Sans Serif">Once again we rely on the random
  288. number generator to provide an interesting result. Try adding the
  289. following color command before the plot statement to vary the
  290. color of the dots.</font></p>
  291. <div align="center"><center>
  292. <table border="2" cellpadding="8" width="600" bgcolor="#006060">
  293. <tr>
  294. <td><font color="#FFE75F" size="2" face="blitz">Color Rnd</font><font
  295. color="#FFF0C8" size="2" face="blitz">(</font><font
  296. color="#C8F0FF" size="2" face="blitz">256</font><font
  297. color="#FFF0C8" size="2" face="blitz">),</font><font
  298. color="#FFE75F" size="2" face="blitz">Rnd</font><font
  299. color="#FFF0C8" size="2" face="blitz">(</font><font
  300. color="#C8F0FF" size="2" face="blitz">256</font><font
  301. color="#FFF0C8" size="2" face="blitz">),</font><font
  302. color="#FFE75F" size="2" face="blitz">Rnd</font><font
  303. color="#FFF0C8" size="2" face="blitz">(</font><font
  304. color="#C8F0FF" size="2" face="blitz">256</font><font
  305. color="#FFF0C8" size="2" face="blitz">)</font></td>
  306. </tr>
  307. </table>
  308. </center></div>
  309. <p><font face="MS Sans Serif">Although this may seem like a
  310. simple program, creating a DirectX display such as featured here
  311. using traditional methods can be a complex task. BlitzBasic makes
  312. it so easy!</font></p>
  313. <hr>
  314. <h4><a name="doublebuffering"><font color="#A7E3F5"
  315. face="MS Sans Serif">Double Buffering</font></a></h4>
  316. <p><font face="MS Sans Serif">The following code illustrates the
  317. typical &quot;main loop&quot; of a game. For a video game to
  318. display smoothly animated graphics it must use a technique called
  319. &quot;Double Buffering&quot;.</font></p>
  320. <p><font face="MS Sans Serif">The following program shows one
  321. frame (the FrontBuffer) while drawing to another frame (the
  322. BackBuffer).</font></p>
  323. <div align="center"><center>
  324. <table border="2" cellpadding="8" width="600" bgcolor="#006060">
  325. <tr>
  326. <td><font color="#00FFFF" size="2" face="blitz">; double
  327. buffering</font><p><font color="#FFE75F" size="2"
  328. face="blitz">Graphics</font><font color="#FFF0C8"
  329. size="2" face="blitz"> </font><font color="#C8F0FF"
  330. size="2" face="blitz">640</font><font color="#FFF0C8"
  331. size="2" face="blitz">,</font><font color="#C8F0FF"
  332. size="2" face="blitz">480</font></p>
  333. <p><font color="#FFE75F" size="2" face="blitz">SetBuffer</font><font
  334. color="#FFF0C8" size="2" face="blitz"> </font><font
  335. color="#FFE75F" size="2" face="blitz">BackBuffer</font><font
  336. color="#FFF0C8" size="2" face="blitz">()</font></p>
  337. <p><font color="#FFE75F" size="2" face="blitz">While</font><font
  338. color="#FFF0C8" size="2" face="blitz"> </font><font
  339. color="#FFE75F" size="2" face="blitz">Not KeyDown</font><font
  340. color="#FFF0C8" size="2" face="blitz">(</font><font
  341. color="#C8F0FF" size="2" face="blitz">1</font><font
  342. color="#FFF0C8" size="2" face="blitz">)</font></p>
  343. <blockquote>
  344. <p><font color="#FFE75F" size="2" face="blitz">Flip</font></p>
  345. <p><font color="#FFE75F" size="2" face="blitz">Cls</font></p>
  346. <p><font color="#FFE75F" size="2" face="blitz">Line</font><font
  347. color="#FFF0C8" size="2" face="blitz"> </font><font
  348. color="#C8F0FF" size="2" face="blitz">320</font><font
  349. color="#FFF0C8" size="2" face="blitz">,</font><font
  350. color="#C8F0FF" size="2" face="blitz">240</font><font
  351. color="#FFF0C8" size="2" face="blitz">,</font><font
  352. color="#C8F0FF" size="2" face="blitz">320</font><font
  353. color="#FFF0C8" size="2" face="blitz">+</font><font
  354. color="#C8F0FF" size="2" face="blitz">100</font><font
  355. color="#FFF0C8" size="2" face="blitz">*</font><font
  356. color="#FFE75F" size="2" face="blitz">Cos</font><font
  357. color="#FFF0C8" size="2" face="blitz">(</font><font
  358. color="#FFFFFF" size="2" face="blitz">a</font><font
  359. color="#FFF0C8" size="2" face="blitz">),</font><font
  360. color="#C8F0FF" size="2" face="blitz">240</font><font
  361. color="#FFF0C8" size="2" face="blitz">+</font><font
  362. color="#C8F0FF" size="2" face="blitz">100</font><font
  363. color="#FFF0C8" size="2" face="blitz">*</font><font
  364. color="#FFE75F" size="2" face="blitz">Sin</font><font
  365. color="#FFF0C8" size="2" face="blitz">(</font><font
  366. color="#FFFFFF" size="2" face="blitz">a</font><font
  367. color="#FFF0C8" size="2" face="blitz">)</font></p>
  368. <p><font color="#FFFFFF" size="2" face="blitz">a</font><font
  369. color="#FFF0C8" size="2" face="blitz">=</font><font
  370. color="#FFFFFF" size="2" face="blitz">a</font><font
  371. color="#FFF0C8" size="2" face="blitz">+</font><font
  372. color="#C8F0FF" size="2" face="blitz">1</font></p>
  373. </blockquote>
  374. <p><font color="#FFE75F" size="2" face="blitz">Wend</font></p>
  375. </td>
  376. </tr>
  377. </table>
  378. </center></div>
  379. <p><font face="MS Sans Serif">In BlitzBasic the Flip command
  380. performs the double buffering by swapping the back and front
  381. buffers. The </font><font color="#FFFF00" face="MS Sans Serif">Cls</font><font
  382. face="MS Sans Serif"> command clears the screen and the </font><font
  383. color="#FFFF00" face="MS Sans Serif">Line</font><font
  384. face="MS Sans Serif"> command draws a line.</font></p>
  385. <p><font face="MS Sans Serif">Note: the flip command also
  386. synchronizes to the video refresh which on standard VGA monitors
  387. is 60 frames per second. </font></p>
  388. <p><font face="MS Sans Serif">The program draws a line from the
  389. center of the screen (320,240) at an angle of a degrees, 100
  390. pixels long.</font></p>
  391. <p><font face="MS Sans Serif">Try changing the program to add 6
  392. to the value of a. If the frame rate of your monitor is 60 frames
  393. per second, and a is incrementing by 6 each frame, in theory it
  394. should increment by 360 every second which is equivalent to a
  395. complete rotation in the world of degrees.</font></p>
  396. <hr>
  397. <h4><a name="mysecondgame"><font color="#A7E3F5"
  398. face="MS Sans Serif">My Second Game</font></a></h4>
  399. <p><font face="MS Sans Serif">The following introduces the basic
  400. skeleton of a simple video game. </font></p>
  401. <p><font face="MS Sans Serif">The status variable contains the
  402. &quot;state&quot; of the game, which is either displaying a title
  403. page or allowing the player to steer round the screen. Extra
  404. states such as player dies with cosmic explosion and gameover
  405. screen would be added to extend the game further.</font></p>
  406. <p><font face="MS Sans Serif">Reading through the program, the
  407. display is initialized in a similar manned to the previous
  408. example using the Graphics and SetBuffer commands. The main loop,
  409. then uses the Flip command to perform the double buffering (allowing
  410. us to draw to one screen while the other is displayed) and then
  411. either prints a message informing the user to press Enter to
  412. start or calls the UpdatePlayer() function.</font></p>
  413. <div align="center"><center>
  414. <table border="2" cellpadding="8" width="600" bgcolor="#006060">
  415. <tr>
  416. <td><font color="#00FFFF" size="2" face="blitz">; eat the
  417. dots</font><p><font color="#FFE75F" size="2" face="blitz">Graphics
  418. </font><font color="#C8F0FF" size="2" face="blitz">640</font><font
  419. color="#FFF0C8" size="2" face="blitz">,</font><font
  420. color="#C8F0FF" size="2" face="blitz">480</font></p>
  421. <p><font color="#FFE75F" size="2" face="blitz">SetBuffer
  422. BackBuffer</font><font color="#FFF0C8" size="2"
  423. face="blitz">()</font></p>
  424. <p><font color="#FFE75F" size="2" face="blitz">Global</font><font
  425. color="#FFFFFF" size="2" face="blitz"> status</font><font
  426. color="#FFF0C8" size="2" face="blitz">=</font><font
  427. color="#C8F0FF" size="2" face="blitz">0</font><font
  428. color="#FFF0C8" size="2" face="blitz">,</font><font
  429. color="#FFFFFF" size="2" face="blitz">x</font><font
  430. color="#FFF0C8" size="2" face="blitz">#=</font><font
  431. color="#C8F0FF" size="2" face="blitz">0</font><font
  432. color="#FFF0C8" size="2" face="blitz">,</font><font
  433. color="#FFFFFF" size="2" face="blitz">y</font><font
  434. color="#FFF0C8" size="2" face="blitz">#=</font><font
  435. color="#C8F0FF" size="2" face="blitz">0</font><font
  436. color="#FFF0C8" size="2" face="blitz">,</font><font
  437. color="#FFFFFF" size="2" face="blitz">speed</font><font
  438. color="#FFF0C8" size="2" face="blitz">#=</font><font
  439. color="#C8F0FF" size="2" face="blitz">1</font><font
  440. color="#FFF0C8" size="2" face="blitz">,</font><font
  441. color="#FFFFFF" size="2" face="blitz">dir</font><font
  442. color="#FFF0C8" size="2" face="blitz">=</font><font
  443. color="#C8F0FF" size="2" face="blitz">1</font></p>
  444. <p><font color="#00FFFF" size="2" face="blitz">; main
  445. loop</font></p>
  446. <p><font color="#FFE75F" size="2" face="blitz">While Not</font><font
  447. color="#FFFFFF" size="2" face="blitz"> </font><font
  448. color="#FFE75F" size="2" face="blitz">KeyHit</font><font
  449. color="#FFF0C8" size="2" face="blitz">(</font><font
  450. color="#C8F0FF" size="2" face="blitz">1</font><font
  451. color="#FFF0C8" size="2" face="blitz">)</font></p>
  452. <p><font color="#00FFFF" size="2" face="blitz">; refresh
  453. screen</font></p>
  454. <blockquote>
  455. <p><font color="#FFE75F" size="2" face="blitz">Flip</font></p>
  456. <p><font color="#FFE75F" size="2" face="blitz">Cls</font></p>
  457. <p><font color="#FFE75F" size="2" face="blitz">Color </font><font
  458. color="#C8F0FF" size="2" face="blitz">255</font><font
  459. color="#FFF0C8" size="2" face="blitz">,</font><font
  460. color="#C8F0FF" size="2" face="blitz">255</font><font
  461. color="#FFF0C8" size="2" face="blitz">,</font><font
  462. color="#C8F0FF" size="2" face="blitz">0</font></p>
  463. <p><font color="#FFE75F" size="2" face="blitz">Rect </font><font
  464. color="#C8F0FF" size="2" face="blitz">0</font><font
  465. color="#FFF0C8" size="2" face="blitz">,</font><font
  466. color="#C8F0FF" size="2" face="blitz">0</font><font
  467. color="#FFF0C8" size="2" face="blitz">,</font><font
  468. color="#C8F0FF" size="2" face="blitz">640</font><font
  469. color="#FFF0C8" size="2" face="blitz">,</font><font
  470. color="#C8F0FF" size="2" face="blitz">480</font><font
  471. color="#FFF0C8" size="2" face="blitz">,</font><font
  472. color="#C8F0FF" size="2" face="blitz">0</font></p>
  473. <p><font color="#00FFFF" size="2" face="blitz">;
  474. select state</font></p>
  475. </blockquote>
  476. <blockquote>
  477. <p><font color="#FFE75F" size="2" face="blitz">Select
  478. </font><font color="#FFFFFF" size="2" face="blitz">status</font></p>
  479. <p><font color="#FFE75F" size="2" face="blitz">Case </font><font
  480. color="#C8F0FF" size="2" face="blitz">0</font></p>
  481. <blockquote>
  482. <p><font color="#FFE75F" size="2" face="blitz">Locate
  483. </font><font color="#C8F0FF" size="2"
  484. face="blitz">100</font><font color="#FFF0C8"
  485. size="2" face="blitz">,</font><font
  486. color="#C8F0FF" size="2" face="blitz">100</font></p>
  487. <p><font color="#FFE75F" size="2" face="blitz">Print
  488. </font><font color="#00FF00" size="2"
  489. face="blitz">&quot;Press Enter To Start&quot;</font></p>
  490. <p><font color="#FFE75F" size="2" face="blitz">If
  491. KeyHit</font><font color="#FFF0C8" size="2"
  492. face="blitz">(28)</font><font color="#C8F0FF"
  493. size="2" face="blitz"> </font><font
  494. color="#FFFFFF" size="2" face="blitz">InitGame</font><font
  495. color="#FFF0C8" size="2" face="blitz">() </font></p>
  496. </blockquote>
  497. <p><font color="#FFE75F" size="2" face="blitz">Case </font><font
  498. color="#C8F0FF" size="2" face="blitz">1</font></p>
  499. <blockquote>
  500. <p><font color="#FFFFFF" size="2" face="blitz">UpdatePlayer</font><font
  501. color="#FFF0C8" size="2" face="blitz">()</font></p>
  502. </blockquote>
  503. <p><font color="#FFE75F" size="2" face="blitz">End
  504. Select</font></p>
  505. </blockquote>
  506. <p><font color="#FFE75F" size="2" face="blitz">Wend</font></p>
  507. </td>
  508. </tr>
  509. </table>
  510. </center></div>
  511. <p><font face="MS Sans Serif">What UpdatePlayer() function you
  512. ask? And if the user presses Enter what's this InitGame()
  513. function?</font></p>
  514. <p><font face="MS Sans Serif">Unlike traditional BASIC languages
  515. where we would implement these functions as subroutines and call
  516. them with the Gosub command BlitzBasic features user defined
  517. functions. </font></p>
  518. <p><font face="MS Sans Serif">Add the following two functions at
  519. the bottom of the above program to allow the program to run.</font></p>
  520. <p><font face="MS Sans Serif">The first function initializes the
  521. variables we will need inorder to steer the players rectangle
  522. around the screen. Note how these variables have been declared at
  523. the top of the program as Global which allows us to access them
  524. from inside functions such as InitGame().</font></p>
  525. <div align="center"><center>
  526. <table border="2" cellpadding="8" width="600" bgcolor="#006060">
  527. <tr>
  528. <td><font color="#FFE75F" size="2" face="blitz">Function</font><font
  529. color="#FFFFFF" size="2" face="blitz"> InitGame</font><font
  530. color="#FFF0C8" size="2" face="blitz">()</font><blockquote>
  531. <p><font color="#FFFFFF" size="2" face="blitz">x</font><font
  532. color="#FFF0C8" size="2" face="blitz">=</font><font
  533. color="#C8F0FF" size="2" face="blitz">320</font></p>
  534. <p><font color="#FFFFFF" size="2" face="blitz">y</font><font
  535. color="#FFF0C8" size="2" face="blitz">=</font><font
  536. color="#C8F0FF" size="2" face="blitz">240</font></p>
  537. <p><font color="#FFFFFF" size="2" face="blitz">speed</font><font
  538. color="#FFF0C8" size="2" face="blitz">=</font><font
  539. color="#C8F0FF" size="2" face="blitz">1</font></p>
  540. <p><font color="#FFFFFF" size="2" face="blitz">dir</font><font
  541. color="#FFF0C8" size="2" face="blitz">=</font><font
  542. color="#C8F0FF" size="2" face="blitz">1</font></p>
  543. <p><font color="#FFFFFF" size="2" face="blitz">status</font><font
  544. color="#FFF0C8" size="2" face="blitz">=</font><font
  545. color="#C8F0FF" size="2" face="blitz">1</font></p>
  546. </blockquote>
  547. <p><font color="#FFE75F" size="2" face="blitz">End
  548. Function</font><font color="#FFF0C8" size="2"
  549. face="blitz"> </font></p>
  550. </td>
  551. </tr>
  552. </table>
  553. </center></div>
  554. <p><font face="MS Sans Serif">This second function changes the
  555. players direction depending on the arrow key they are pressing or
  556. the direction of the joystick. The code then moves the players
  557. position (x,y) depending on the dir variable which corresponds to
  558. up, right, down and left respectively.</font></p>
  559. <div align="center"><center>
  560. <table border="2" cellpadding="8" width="600" bgcolor="#006060">
  561. <tr>
  562. <td><font color="#FFE75F" size="2" face="blitz">Function </font><font
  563. color="#FFFFFF" size="2" face="blitz">UpdatePlayer</font><font
  564. color="#FFF0C8" size="2" face="blitz">()</font><blockquote>
  565. <p><font color="#00FFFF" size="2" face="blitz">;
  566. steer player </font></p>
  567. <p><font color="#FFE75F" size="2" face="blitz">If
  568. KeyDown</font><font color="#FFF0C8" size="2"
  569. face="blitz">(</font><font color="#C8F0FF" size="2"
  570. face="blitz">200</font><font color="#FFF0C8" size="2"
  571. face="blitz">) </font><font color="#FFE75F" size="2"
  572. face="blitz">Or JoyY</font><font color="#FFF0C8"
  573. size="2" face="blitz">()&lt;-</font><font
  574. color="#C8F0FF" size="2" face="blitz">0</font><font
  575. color="#FFF0C8" size="2" face="blitz">.</font><font
  576. color="#C8F0FF" size="2" face="blitz">5 </font><font
  577. color="#FFFFFF" size="2" face="blitz">dir</font><font
  578. color="#FFF0C8" size="2" face="blitz">=</font><font
  579. color="#C8F0FF" size="2" face="blitz">0</font></p>
  580. <p><font color="#FFE75F" size="2" face="blitz">If
  581. KeyDown</font><font color="#FFF0C8" size="2"
  582. face="blitz">(</font><font color="#C8F0FF" size="2"
  583. face="blitz">205</font><font color="#FFF0C8" size="2"
  584. face="blitz">) </font><font color="#FFE75F" size="2"
  585. face="blitz">Or JoyX</font><font color="#FFF0C8"
  586. size="2" face="blitz">()&gt;</font><font
  587. color="#C8F0FF" size="2" face="blitz">0</font><font
  588. color="#FFF0C8" size="2" face="blitz">.</font><font
  589. color="#C8F0FF" size="2" face="blitz">5 </font><font
  590. color="#FFFFFF" size="2" face="blitz">dir</font><font
  591. color="#FFF0C8" size="2" face="blitz">=</font><font
  592. color="#C8F0FF" size="2" face="blitz">1</font></p>
  593. <p><font color="#FFE75F" size="2" face="blitz">If
  594. KeyDown</font><font color="#FFF0C8" size="2"
  595. face="blitz">(</font><font color="#C8F0FF" size="2"
  596. face="blitz">208</font><font color="#FFF0C8" size="2"
  597. face="blitz">) </font><font color="#FFE75F" size="2"
  598. face="blitz">Or JoyY</font><font color="#FFF0C8"
  599. size="2" face="blitz">()&gt;</font><font
  600. color="#C8F0FF" size="2" face="blitz">0</font><font
  601. color="#FFF0C8" size="2" face="blitz">.</font><font
  602. color="#C8F0FF" size="2" face="blitz">5 </font><font
  603. color="#FFFFFF" size="2" face="blitz">dir</font><font
  604. color="#FFF0C8" size="2" face="blitz">=</font><font
  605. color="#C8F0FF" size="2" face="blitz">2</font></p>
  606. <p><font color="#FFE75F" size="2" face="blitz">If
  607. KeyDown</font><font color="#FFF0C8" size="2"
  608. face="blitz">(</font><font color="#C8F0FF" size="2"
  609. face="blitz">203</font><font color="#FFF0C8" size="2"
  610. face="blitz">) </font><font color="#FFE75F" size="2"
  611. face="blitz">Or JoyX</font><font color="#FFF0C8"
  612. size="2" face="blitz">()&lt;-</font><font
  613. color="#C8F0FF" size="2" face="blitz">0</font><font
  614. color="#FFF0C8" size="2" face="blitz">.</font><font
  615. color="#C8F0FF" size="2" face="blitz">5 </font><font
  616. color="#FFFFFF" size="2" face="blitz">dir</font><font
  617. color="#FFF0C8" size="2" face="blitz">=</font><font
  618. color="#C8F0FF" size="2" face="blitz">3</font></p>
  619. <p><font color="#00FFFF" size="2" face="blitz">; move
  620. player</font></p>
  621. <p><font color="#FFE75F" size="2" face="blitz">Select
  622. </font><font color="#FFFFFF" size="2" face="blitz">dir</font></p>
  623. <blockquote>
  624. <p><font color="#FFE75F" size="2" face="blitz">Case
  625. </font><font color="#C8F0FF" size="2"
  626. face="blitz">0 </font><font color="#FFFFFF"
  627. size="2" face="blitz">y</font><font
  628. color="#FFF0C8" size="2" face="blitz">=</font><font
  629. color="#FFFFFF" size="2" face="blitz">y</font><font
  630. color="#FFF0C8" size="2" face="blitz">-</font><font
  631. color="#FFFFFF" size="2" face="blitz">speed</font></p>
  632. <p><font color="#FFE75F" size="2" face="blitz">Case
  633. </font><font color="#C8F0FF" size="2"
  634. face="blitz">1 </font><font color="#FFFFFF"
  635. size="2" face="blitz">x</font><font
  636. color="#FFF0C8" size="2" face="blitz">=</font><font
  637. color="#FFFFFF" size="2" face="blitz">x</font><font
  638. color="#FFF0C8" size="2" face="blitz">+</font><font
  639. color="#FFFFFF" size="2" face="blitz">speed</font></p>
  640. <p><font color="#FFE75F" size="2" face="blitz">Case
  641. </font><font color="#C8F0FF" size="2"
  642. face="blitz">2 </font><font color="#FFFFFF"
  643. size="2" face="blitz">y</font><font
  644. color="#FFF0C8" size="2" face="blitz">=</font><font
  645. color="#FFFFFF" size="2" face="blitz">y</font><font
  646. color="#FFF0C8" size="2" face="blitz">+</font><font
  647. color="#FFFFFF" size="2" face="blitz">speed</font></p>
  648. <p><font color="#FFE75F" size="2" face="blitz">Case
  649. </font><font color="#C8F0FF" size="2"
  650. face="blitz">3 </font><font color="#FFFFFF"
  651. size="2" face="blitz">x</font><font
  652. color="#FFF0C8" size="2" face="blitz">=</font><font
  653. color="#FFFFFF" size="2" face="blitz">x</font><font
  654. color="#FFF0C8" size="2" face="blitz">-</font><font
  655. color="#FFFFFF" size="2" face="blitz">speed</font></p>
  656. </blockquote>
  657. <p><font color="#FFE75F" size="2" face="blitz">End
  658. Select</font></p>
  659. <p><font color="#00FFFF" size="2" face="blitz">; draw
  660. player </font></p>
  661. <p><font color="#FFE75F" size="2" face="blitz">Color </font><font
  662. color="#C8F0FF" size="2" face="blitz">255</font><font
  663. color="#FFF0C8" size="2" face="blitz">,</font><font
  664. color="#C8F0FF" size="2" face="blitz">255</font><font
  665. color="#FFF0C8" size="2" face="blitz">,</font><font
  666. color="#C8F0FF" size="2" face="blitz">255</font></p>
  667. <p><font color="#FFE75F" size="2" face="blitz">Rect </font><font
  668. color="#FFFFFF" size="2" face="blitz">x</font><font
  669. color="#FFF0C8" size="2" face="blitz">,</font><font
  670. color="#FFFFFF" size="2" face="blitz">y</font><font
  671. color="#FFF0C8" size="2" face="blitz">,</font><font
  672. color="#C8F0FF" size="2" face="blitz">10</font><font
  673. color="#FFF0C8" size="2" face="blitz">,</font><font
  674. color="#C8F0FF" size="2" face="blitz">10</font></p>
  675. </blockquote>
  676. <p><font color="#FFE75F" size="2" face="blitz">End
  677. Function</font></p>
  678. </td>
  679. </tr>
  680. </table>
  681. </center></div>
  682. <p><font face="MS Sans Serif">After adding the InitGame() and
  683. UpdatePlayer() code the game should run.</font></p>
  684. <p><font face="MS Sans Serif">Next it's time to add some deadly
  685. rocks and some yummy food. </font></p>
  686. <p><font face="MS Sans Serif">In order to do this we create some
  687. new Types that will hold all the information we need for each
  688. rock and food. To begin with these Types will simply hold the x
  689. and y position of each rock and food element we create for our
  690. game.</font></p>
  691. <p><font face="MS Sans Serif">Place the following Type
  692. declarations at the top of the program.</font></p>
  693. <div align="center"><center>
  694. <table border="2" cellpadding="8" width="600" bgcolor="#006060">
  695. <tr>
  696. <td><font color="#FFE75F" size="2" face="blitz">Type </font><font
  697. color="#FFFFFF" size="2" face="blitz">food</font><blockquote>
  698. <p><font color="#FFE75F" size="2" face="blitz">Field </font><font
  699. color="#FFFFFF" size="2" face="blitz">x</font><font
  700. color="#FFF0C8" size="2" face="blitz">,</font><font
  701. color="#FFFFFF" size="2" face="blitz">y</font></p>
  702. </blockquote>
  703. <p><font color="#FFE75F" size="2" face="blitz">End Type</font></p>
  704. <p><font color="#FFE75F" size="2" face="blitz">Type </font><font
  705. color="#FFFFFF" size="2" face="blitz">rock</font></p>
  706. <blockquote>
  707. <p><font color="#FFE75F" size="2" face="blitz">Field </font><font
  708. color="#FFFFFF" size="2" face="blitz">x</font><font
  709. color="#FFF0C8" size="2" face="blitz">,</font><font
  710. color="#FFFFFF" size="2" face="blitz">y</font></p>
  711. </blockquote>
  712. <p><font color="#FFE75F" size="2" face="blitz">End Type</font></p>
  713. </td>
  714. </tr>
  715. </table>
  716. </center></div>
  717. <p><font face="MS Sans Serif">The following code then needs to be
  718. added to the InitGame() function, insert it after the line that
  719. reads status=1.</font></p>
  720. <p><font face="MS Sans Serif">This code creates 20 rocks that
  721. will kill the player and 20 food that will speed the player up.
  722. The New command creates a new object and also adds it to a list.
  723. We set the position of each rock and food by setting the x and y
  724. fields of each new object created using the backslash \ character
  725. to denote which field.</font></p>
  726. <div align="center"><center>
  727. <table border="2" cellpadding="8" width="600" bgcolor="#006060">
  728. <tr>
  729. <td><font color="#FFE75F" size="2" face="blitz">For </font><font
  730. color="#FFFFFF" size="2" face="blitz">i</font><font
  731. color="#FFF0C8" size="2" face="blitz">=</font><font
  732. color="#C8F0FF" size="2" face="blitz">0 </font><font
  733. color="#FFE75F" size="2" face="blitz">To </font><font
  734. color="#C8F0FF" size="2" face="blitz">20 </font><blockquote>
  735. <p><font color="#FFFFFF" size="2" face="blitz">r</font><font
  736. color="#FFF0C8" size="2" face="blitz">.</font><font
  737. color="#FFFFFF" size="2" face="blitz">rock</font><font
  738. color="#FFF0C8" size="2" face="blitz">=</font><font
  739. color="#FFE75F" size="2" face="blitz">New </font><font
  740. color="#FFFFFF" size="2" face="blitz">rock</font></p>
  741. <p><font color="#FFFFFF" size="2" face="blitz">r</font><font
  742. color="#FFF0C8" size="2" face="blitz">\</font><font
  743. color="#FFFFFF" size="2" face="blitz">x</font><font
  744. color="#FFF0C8" size="2" face="blitz">=</font><font
  745. color="#FFE75F" size="2" face="blitz">Rnd</font><font
  746. color="#FFF0C8" size="2" face="blitz">(</font><font
  747. color="#C8F0FF" size="2" face="blitz">640</font><font
  748. color="#FFF0C8" size="2" face="blitz">)</font></p>
  749. <p><font color="#FFFFFF" size="2" face="blitz">r</font><font
  750. color="#FFF0C8" size="2" face="blitz">\</font><font
  751. color="#FFFFFF" size="2" face="blitz">y</font><font
  752. color="#FFF0C8" size="2" face="blitz">=</font><font
  753. color="#FFE75F" size="2" face="blitz">Rnd</font><font
  754. color="#FFF0C8" size="2" face="blitz">(</font><font
  755. color="#C8F0FF" size="2" face="blitz">480</font><font
  756. color="#FFF0C8" size="2" face="blitz">)</font></p>
  757. </blockquote>
  758. <p><font color="#FFE75F" size="2" face="blitz">Next</font></p>
  759. <p><font color="#FFE75F" size="2" face="blitz">For </font><font
  760. color="#FFFFFF" size="2" face="blitz">i</font><font
  761. color="#FFF0C8" size="2" face="blitz">=</font><font
  762. color="#C8F0FF" size="2" face="blitz">0 </font><font
  763. color="#FFE75F" size="2" face="blitz">To </font><font
  764. color="#C8F0FF" size="2" face="blitz">20 </font></p>
  765. <blockquote>
  766. <p><font color="#FFFFFF" size="2" face="blitz">f</font><font
  767. color="#FFF0C8" size="2" face="blitz">.</font><font
  768. color="#FFFFFF" size="2" face="blitz">food</font><font
  769. color="#FFF0C8" size="2" face="blitz">=</font><font
  770. color="#FFE75F" size="2" face="blitz">New </font><font
  771. color="#FFFFFF" size="2" face="blitz">food</font></p>
  772. <p><font color="#FFFFFF" size="2" face="blitz">f</font><font
  773. color="#FFF0C8" size="2" face="blitz">\</font><font
  774. color="#FFFFFF" size="2" face="blitz">x</font><font
  775. color="#FFF0C8" size="2" face="blitz">=</font><font
  776. color="#FFE75F" size="2" face="blitz">Rnd</font><font
  777. color="#FFF0C8" size="2" face="blitz">(</font><font
  778. color="#C8F0FF" size="2" face="blitz">640</font><font
  779. color="#FFF0C8" size="2" face="blitz">)</font></p>
  780. <p><font color="#FFFFFF" size="2" face="blitz">f</font><font
  781. color="#FFF0C8" size="2" face="blitz">\</font><font
  782. color="#FFFFFF" size="2" face="blitz">y</font><font
  783. color="#FFF0C8" size="2" face="blitz">=</font><font
  784. color="#FFE75F" size="2" face="blitz">Rnd</font><font
  785. color="#FFF0C8" size="2" face="blitz">(</font><font
  786. color="#C8F0FF" size="2" face="blitz">480</font><font
  787. color="#FFF0C8" size="2" face="blitz">)</font></p>
  788. </blockquote>
  789. <p><font color="#FFE75F" size="2" face="blitz">Next</font></p>
  790. </td>
  791. </tr>
  792. </table>
  793. </center></div>
  794. <p><font face="MS Sans Serif">We now need a function that draws
  795. all the food and rocks each frame and checks if the player has
  796. collided with any.</font></p>
  797. <p><font face="MS Sans Serif">Note how we can loop through each
  798. food and rock element that exist using the For..Each command pair.
  799. This is another great feature of BlitzBasic that keeps programs
  800. simple and easy to read.</font></p>
  801. <p><font face="MS Sans Serif">We use the RectsOverlap command to
  802. check of the players position (x,y) collides with each food or
  803. rock element (f \ x , f \ y) or (r \ x , r \ y). If the player
  804. collides with some food we delete that piece of food and increase
  805. the player's speed. If the player collides with a rock we end the
  806. game by resetting the status variable.</font></p>
  807. <div align="center"><center>
  808. <table border="2" cellpadding="8" width="600" bgcolor="#006060">
  809. <tr>
  810. <td><font color="#FFE75F" size="2" face="blitz">Function </font><font
  811. color="#FFFFFF" size="2" face="blitz">UpdateRocksandFood</font><font
  812. color="#FFF0C8" size="2" face="blitz">()</font><blockquote>
  813. <p><font color="#00FFFF" size="2" face="blitz">; draw
  814. food and check if eaten</font></p>
  815. <p><font color="#FFE75F" size="2" face="blitz">Color </font><font
  816. color="#C8F0FF" size="2" face="blitz">0</font><font
  817. color="#FFF0C8" size="2" face="blitz">,</font><font
  818. color="#C8F0FF" size="2" face="blitz">255</font><font
  819. color="#FFF0C8" size="2" face="blitz">,</font><font
  820. color="#C8F0FF" size="2" face="blitz">0</font></p>
  821. <p><font color="#FFE75F" size="2" face="blitz">For </font><font
  822. color="#FFFFFF" size="2" face="blitz">f</font><font
  823. color="#FFF0C8" size="2" face="blitz">.</font><font
  824. color="#FFFFFF" size="2" face="blitz">food</font><font
  825. color="#FFF0C8" size="2" face="blitz">=</font><font
  826. color="#FFE75F" size="2" face="blitz">Each </font><font
  827. color="#FFFFFF" size="2" face="blitz">food </font></p>
  828. <blockquote>
  829. <p><font color="#FFE75F" size="2" face="blitz">Rect
  830. </font><font color="#FFFFFF" size="2"
  831. face="blitz">f</font><font color="#FFF0C8"
  832. size="2" face="blitz">\</font><font
  833. color="#FFFFFF" size="2" face="blitz">x</font><font
  834. color="#FFF0C8" size="2" face="blitz">,</font><font
  835. color="#FFFFFF" size="2" face="blitz">f</font><font
  836. color="#FFF0C8" size="2" face="blitz">\</font><font
  837. color="#FFFFFF" size="2" face="blitz">y</font><font
  838. color="#FFF0C8" size="2" face="blitz">,</font><font
  839. color="#C8F0FF" size="2" face="blitz">10</font><font
  840. color="#FFF0C8" size="2" face="blitz">,</font><font
  841. color="#C8F0FF" size="2" face="blitz">10</font></p>
  842. <p><font color="#FFE75F" size="2" face="blitz">If
  843. RectsOverlap</font><font color="#FFF0C8" size="2"
  844. face="blitz">(</font><font color="#FFFFFF"
  845. size="2" face="blitz">x</font><font
  846. color="#FFF0C8" size="2" face="blitz">,</font><font
  847. color="#FFFFFF" size="2" face="blitz">y</font><font
  848. color="#FFF0C8" size="2" face="blitz">,</font><font
  849. color="#C8F0FF" size="2" face="blitz">10</font><font
  850. color="#FFF0C8" size="2" face="blitz">,</font><font
  851. color="#C8F0FF" size="2" face="blitz">10</font><font
  852. color="#FFF0C8" size="2" face="blitz">,</font><font
  853. color="#FFFFFF" size="2" face="blitz">f</font><font
  854. color="#FFF0C8" size="2" face="blitz">\</font><font
  855. color="#FFFFFF" size="2" face="blitz">x</font><font
  856. color="#FFF0C8" size="2" face="blitz">,</font><font
  857. color="#FFFFFF" size="2" face="blitz">f</font><font
  858. color="#FFF0C8" size="2" face="blitz">\</font><font
  859. color="#FFFFFF" size="2" face="blitz">y</font><font
  860. color="#FFF0C8" size="2" face="blitz">,</font><font
  861. color="#C8F0FF" size="2" face="blitz">10</font><font
  862. color="#FFF0C8" size="2" face="blitz">,</font><font
  863. color="#C8F0FF" size="2" face="blitz">10</font><font
  864. color="#FFF0C8" size="2" face="blitz">)</font></p>
  865. <blockquote>
  866. <p><font color="#FFFFFF" size="2"
  867. face="blitz">speed</font><font
  868. color="#FFF0C8" size="2" face="blitz">=</font><font
  869. color="#FFFFFF" size="2" face="blitz">speed</font><font
  870. color="#FFF0C8" size="2" face="blitz">+</font><font
  871. color="#C8F0FF" size="2" face="blitz">0</font><font
  872. color="#FFF0C8" size="2" face="blitz">.</font><font
  873. color="#C8F0FF" size="2" face="blitz">2</font></p>
  874. <p><font color="#FFE75F" size="2"
  875. face="blitz">Delete </font><font
  876. color="#FFFFFF" size="2" face="blitz">f</font></p>
  877. </blockquote>
  878. <p><font color="#FFE75F" size="2" face="blitz">EndIf
  879. </font></p>
  880. </blockquote>
  881. <p><font color="#FFE75F" size="2" face="blitz">Next</font></p>
  882. <p><font color="#00FFFF" size="2" face="blitz">; draw
  883. rocks and check for roadkill</font></p>
  884. <p><font color="#FFE75F" size="2" face="blitz">Color </font><font
  885. color="#C8F0FF" size="2" face="blitz">255</font><font
  886. color="#FFF0C8" size="2" face="blitz">,</font><font
  887. color="#C8F0FF" size="2" face="blitz">0</font><font
  888. color="#FFF0C8" size="2" face="blitz">,</font><font
  889. color="#C8F0FF" size="2" face="blitz">255</font></p>
  890. <p><font color="#FFE75F" size="2" face="blitz">For </font><font
  891. color="#FFFFFF" size="2" face="blitz">r</font><font
  892. color="#FFF0C8" size="2" face="blitz">.</font><font
  893. color="#FFFFFF" size="2" face="blitz">rock</font><font
  894. color="#FFF0C8" size="2" face="blitz">=</font><font
  895. color="#FFE75F" size="2" face="blitz">Each </font><font
  896. color="#FFFFFF" size="2" face="blitz">rock </font></p>
  897. <blockquote>
  898. <p><font color="#FFE75F" size="2" face="blitz">Rect
  899. </font><font color="#FFFFFF" size="2"
  900. face="blitz">r</font><font color="#FFF0C8"
  901. size="2" face="blitz">\</font><font
  902. color="#FFFFFF" size="2" face="blitz">x</font><font
  903. color="#FFF0C8" size="2" face="blitz">,</font><font
  904. color="#FFFFFF" size="2" face="blitz">r</font><font
  905. color="#FFF0C8" size="2" face="blitz">\</font><font
  906. color="#FFFFFF" size="2" face="blitz">y</font><font
  907. color="#FFF0C8" size="2" face="blitz">,</font><font
  908. color="#C8F0FF" size="2" face="blitz">10</font><font
  909. color="#FFF0C8" size="2" face="blitz">,</font><font
  910. color="#C8F0FF" size="2" face="blitz">10</font></p>
  911. <p><font color="#FFE75F" size="2" face="blitz">If
  912. RectsOverlap</font><font color="#FFF0C8" size="2"
  913. face="blitz">(</font><font color="#FFFFFF"
  914. size="2" face="blitz">x</font><font
  915. color="#FFF0C8" size="2" face="blitz">,</font><font
  916. color="#FFFFFF" size="2" face="blitz">y</font><font
  917. color="#FFF0C8" size="2" face="blitz">,</font><font
  918. color="#C8F0FF" size="2" face="blitz">10</font><font
  919. color="#FFF0C8" size="2" face="blitz">,</font><font
  920. color="#C8F0FF" size="2" face="blitz">10</font><font
  921. color="#FFF0C8" size="2" face="blitz">,</font><font
  922. color="#FFFFFF" size="2" face="blitz">r</font><font
  923. color="#FFF0C8" size="2" face="blitz">\</font><font
  924. color="#FFFFFF" size="2" face="blitz">x</font><font
  925. color="#FFF0C8" size="2" face="blitz">,</font><font
  926. color="#FFFFFF" size="2" face="blitz">r</font><font
  927. color="#FFF0C8" size="2" face="blitz">\</font><font
  928. color="#FFFFFF" size="2" face="blitz">y</font><font
  929. color="#FFF0C8" size="2" face="blitz">,</font><font
  930. color="#C8F0FF" size="2" face="blitz">10</font><font
  931. color="#FFF0C8" size="2" face="blitz">,</font><font
  932. color="#C8F0FF" size="2" face="blitz">10</font><font
  933. color="#FFF0C8" size="2" face="blitz">)</font></p>
  934. <blockquote>
  935. <p><font color="#FFFFFF" size="2"
  936. face="blitz">status</font><font
  937. color="#FFF0C8" size="2" face="blitz">=</font><font
  938. color="#C8F0FF" size="2" face="blitz">0</font></p>
  939. </blockquote>
  940. </blockquote>
  941. <blockquote>
  942. <p><font color="#FFE75F" size="2" face="blitz">EndIf</font></p>
  943. </blockquote>
  944. <p><font color="#FFE75F" size="2" face="blitz">Next</font></p>
  945. </blockquote>
  946. <p><font color="#FFE75F" size="2" face="blitz">End
  947. Function</font></p>
  948. </td>
  949. </tr>
  950. </table>
  951. </center></div>
  952. <p><font face="MS Sans Serif">Oops, one last thing, don't forget
  953. to call the UpdateRocksandFood() function from the main loop,
  954. just after the UpdatePlayer() call should do nicely.</font></p>
  955. <div align="center"><center>
  956. <table border="2" cellpadding="8" width="600" bgcolor="#006060">
  957. <tr>
  958. <td><font color="#FFFFFF" size="2" face="blitz">UpdateRocksandFood</font><font
  959. color="#FFF0C8" size="2" face="blitz">()</font></td>
  960. </tr>
  961. </table>
  962. </center></div>
  963. <p><font face="MS Sans Serif">OK, after playing the game, a few
  964. things should become evident.</font></p>
  965. <p><font face="MS Sans Serif">First, the player should die if
  966. they hit the outer wall. We could do this by checking if their
  967. position does not collide with the main screen rectangle (0,0,640,480).
  968. Try adding the following code to the UpdatePlayer function.</font></p>
  969. <div align="center"><center>
  970. <table border="2" cellpadding="8" width="600" bgcolor="#006060">
  971. <tr>
  972. <td><font color="#FFE75F" size="2" face="blitz">If Not
  973. RectsOverlap</font><font color="#FFF0C8" size="2"
  974. face="blitz">(</font><font color="#FFFFFF" size="2"
  975. face="blitz">x</font><font color="#FFF0C8" size="2"
  976. face="blitz">,</font><font color="#FFFFFF" size="2"
  977. face="blitz">y</font><font color="#FFF0C8" size="2"
  978. face="blitz">,</font><font color="#C8F0FF" size="2"
  979. face="blitz">10</font><font color="#FFF0C8" size="2"
  980. face="blitz">,</font><font color="#C8F0FF" size="2"
  981. face="blitz">10</font><font color="#FFF0C8" size="2"
  982. face="blitz">,</font><font color="#C8F0FF" size="2"
  983. face="blitz">0</font><font color="#FFF0C8" size="2"
  984. face="blitz">,</font><font color="#C8F0FF" size="2"
  985. face="blitz">0</font><font color="#FFF0C8" size="2"
  986. face="blitz">,</font><font color="#C8F0FF" size="2"
  987. face="blitz">630</font><font color="#FFF0C8" size="2"
  988. face="blitz">,</font><font color="#C8F0FF" size="2"
  989. face="blitz">470</font><font color="#FFF0C8" size="2"
  990. face="blitz">) </font><font color="#FFFFFF" size="2"
  991. face="blitz">status</font><font color="#FFF0C8" size="2"
  992. face="blitz">=</font><font color="#C8F0FF" size="2"
  993. face="blitz">0</font></td>
  994. </tr>
  995. </table>
  996. </center></div>
  997. <p><font face="MS Sans Serif">Secondly, each time the game starts
  998. more rocks and food appear. This is because we never delete the
  999. food and rocks remaining from the last game. Insert the following
  1000. code <strong>before</strong> the code that creates the new food
  1001. and rocks in the InitGame() function.</font></p>
  1002. <div align="center"><center>
  1003. <table border="2" cellpadding="8" width="600" bgcolor="#006060">
  1004. <tr>
  1005. <td><font color="#FFE75F" size="2" face="blitz">For </font><font
  1006. color="#FFFFFF" size="2" face="blitz">f</font><font
  1007. color="#FFF0C8" size="2" face="blitz">.</font><font
  1008. color="#FFFFFF" size="2" face="blitz">food</font><font
  1009. color="#FFF0C8" size="2" face="blitz">=</font><font
  1010. color="#FFE75F" size="2" face="blitz">Each </font><font
  1011. color="#FFFFFF" size="2" face="blitz">food </font><font
  1012. color="#FFE75F" size="2" face="blitz">Delete </font><font
  1013. color="#FFFFFF" size="2" face="blitz">f </font><font
  1014. color="#FFE75F" size="2" face="blitz">Next</font><p><font
  1015. color="#FFE75F" size="2" face="blitz">For </font><font
  1016. color="#FFFFFF" size="2" face="blitz">r</font><font
  1017. color="#FFF0C8" size="2" face="blitz">.</font><font
  1018. color="#FFFFFF" size="2" face="blitz">rock</font><font
  1019. color="#FFF0C8" size="2" face="blitz">=</font><font
  1020. color="#FFE75F" size="2" face="blitz">Each </font><font
  1021. color="#FFFFFF" size="2" face="blitz">rock </font><font
  1022. color="#FFE75F" size="2" face="blitz">Delete </font><font
  1023. color="#FFFFFF" size="2" face="blitz">r </font><font
  1024. color="#FFE75F" size="2" face="blitz">Next</font></p>
  1025. </td>
  1026. </tr>
  1027. </table>
  1028. </center></div>
  1029. </BODY>
  1030. </HTML>