1 | <!DOCTYPE HTML> |
---|
2 | <!-- saved from url=(0052)https://trac.cc.jyu.fi/projects/npo/wiki/Pong/Vaihe1 --> |
---|
3 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><HTML |
---|
4 | xmlns="http://www.w3.org/1999/xhtml"><HEAD><META content="IE=11.0000" |
---|
5 | http-equiv="X-UA-Compatible"> |
---|
6 | <TITLE> Pong/Vaihe1 – Nuorten peliohjelmointikurssi </TITLE> |
---|
7 | <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> <!--[if IE]><script type="text/javascript"> |
---|
8 | if (/^#__msie303:/.test(window.location.hash)) |
---|
9 | window.location.replace(window.location.hash.replace(/^#__msie303:/, '#')); |
---|
10 | </script><![endif]--> |
---|
11 | <LINK href="/projects/npo/search" rel="search"> <LINK href="/projects/npo/wiki/TracGuide" |
---|
12 | rel="help"> <LINK title="Plain Text" href="/projects/npo/wiki/Pong/Vaihe1?format=txt" |
---|
13 | rel="alternate" type="text/x-trac-wiki"><LINK title="PDF" href="/projects/npo/wiki/Pong/Vaihe1?format=pdf" |
---|
14 | rel="alternate" type="text/x-trac-wiki"> <LINK title="View parent page" |
---|
15 | href="/projects/npo/wiki/Pong" rel="up"> <LINK href="/projects/npo/wiki" |
---|
16 | rel="start"> <LINK href="Pong-Vaihe1%20–%20Nuorten%20peliohjelmointikurssi_files/trac.css" |
---|
17 | rel="stylesheet" type="text/css"><LINK href="Pong-Vaihe1%20–%20Nuorten%20peliohjelmointikurssi_files/wiki.css" |
---|
18 | rel="stylesheet" type="text/css"> <LINK href="/projects/npo/chrome/common/trac.ico" |
---|
19 | rel="shortcut icon" type="image/x-icon"> <LINK href="/projects/npo/chrome/common/trac.ico" |
---|
20 | rel="icon" type="image/x-icon"> <LINK title="Search Nuorten peliohjelmointikurssi" |
---|
21 | href="/projects/npo/search/opensearch" rel="search" type="application/opensearchdescription+xml"> |
---|
22 | |
---|
23 | <SCRIPT src="Pong-Vaihe1%20–%20Nuorten%20peliohjelmointikurssi_files/jquery.js" type="text/javascript"></SCRIPT> |
---|
24 | |
---|
25 | <SCRIPT src="Pong-Vaihe1%20–%20Nuorten%20peliohjelmointikurssi_files/babel.js" type="text/javascript"></SCRIPT> |
---|
26 | |
---|
27 | <SCRIPT src="Pong-Vaihe1%20–%20Nuorten%20peliohjelmointikurssi_files/en_US.js" type="text/javascript"></SCRIPT> |
---|
28 | |
---|
29 | <SCRIPT src="Pong-Vaihe1%20–%20Nuorten%20peliohjelmointikurssi_files/trac.js" type="text/javascript"></SCRIPT> |
---|
30 | |
---|
31 | <SCRIPT src="Pong-Vaihe1%20–%20Nuorten%20peliohjelmointikurssi_files/search.js" type="text/javascript"></SCRIPT> |
---|
32 | |
---|
33 | <SCRIPT src="Pong-Vaihe1%20–%20Nuorten%20peliohjelmointikurssi_files/folding.js" type="text/javascript"></SCRIPT> |
---|
34 | <!--[if lt IE 7]> |
---|
35 | <script type="text/javascript" src="/projects/npo/chrome/common/js/ie_pre7_hacks.js"></script> |
---|
36 | <![endif]--> |
---|
37 | |
---|
38 | <SCRIPT type="text/javascript"> |
---|
39 | jQuery(document).ready(function($) { |
---|
40 | $("#content").find("h1,h2,h3,h4,h5,h6").addAnchor(_("Link to this section")); |
---|
41 | $("#content").find(".wikianchor").each(function() { |
---|
42 | $(this).addAnchor(babel.format(_("Link to #%(id)s"), {id: $(this).attr('id')})); |
---|
43 | }); |
---|
44 | $(".foldable").enableFolding(true, true); |
---|
45 | }); |
---|
46 | </SCRIPT> |
---|
47 | <LINK href="Pong-Vaihe1%20–%20Nuorten%20peliohjelmointikurssi_files/style.css" |
---|
48 | rel="stylesheet" type="text/css"> <!-- href="${href.chrome('site/style.css')}" /> --> |
---|
49 | |
---|
50 | <META name="GENERATOR" content="MSHTML 11.00.9600.17924"></HEAD> |
---|
51 | <BODY> |
---|
52 | <DIV class="ylalinkkipalkki" id="siteheader"></DIV> |
---|
53 | <DIV id="banner"> |
---|
54 | <DIV id="header"><A id="logo" href="https://trac.cc.jyu.fi/projects/npo"><IMG |
---|
55 | width="326" height="73" alt="" src="Pong-Vaihe1%20–%20Nuorten%20peliohjelmointikurssi_files/npo.png"></A> |
---|
56 | </DIV> |
---|
57 | <FORM id="search" action="/projects/npo/search" method="get"> |
---|
58 | <DIV><LABEL for="proj-search">Search:</LABEL> <INPUT name="q" id="proj-search" type="text" size="18"> |
---|
59 | <INPUT type="submit" value="Search"> </DIV></FORM> |
---|
60 | <DIV class="nav" id="metanav"> |
---|
61 | <UL> |
---|
62 | <LI class="first"><A |
---|
63 | href="https://trac.cc.jyu.fi/projects/npo/login">Login</A></LI> |
---|
64 | <LI><A |
---|
65 | href="https://trac.cc.jyu.fi/projects/npo/wiki/TracGuide">Help/Guide</A></LI> |
---|
66 | <LI><A href="https://trac.cc.jyu.fi/projects/npo/about">About Trac</A></LI> |
---|
67 | <LI class="last"><A |
---|
68 | href="https://trac.cc.jyu.fi/projects/npo/prefs">Preferences</A></LI> |
---|
69 | </UL></DIV></DIV> |
---|
70 | <DIV class="nav" id="mainnav"> |
---|
71 | <UL> |
---|
72 | <LI class="first active"><A |
---|
73 | href="https://trac.cc.jyu.fi/projects/npo/wiki">Wiki</A></LI> |
---|
74 | <LI><A href="https://trac.cc.jyu.fi/projects/npo/browser">Browse |
---|
75 | Source</A></LI> |
---|
76 | <LI class="last"><A |
---|
77 | href="https://trac.cc.jyu.fi/projects/npo/search">Search</A></LI> |
---|
78 | </UL></DIV> |
---|
79 | <DIV id="main"> |
---|
80 | <DIV class="noprint" id="pagepath"><A title="View WikiStart" class="pathentry first" |
---|
81 | href="https://trac.cc.jyu.fi/projects/npo/wiki">wiki:</A><A title="View Pong" |
---|
82 | class="pathentry" |
---|
83 | href="https://trac.cc.jyu.fi/projects/npo/wiki/Pong">Pong</A><SPAN class="pathentry sep">/</SPAN><A |
---|
84 | title="View Pong/Vaihe1" class="pathentry" href="https://trac.cc.jyu.fi/projects/npo/wiki/Pong/Vaihe1">Vaihe1</A> |
---|
85 | </DIV> |
---|
86 | <DIV class="nav" id="ctxtnav"> |
---|
87 | <H2>Context Navigation</H2> |
---|
88 | <UL> |
---|
89 | <LI class="first"><A |
---|
90 | href="https://trac.cc.jyu.fi/projects/npo/wiki/Pong">Up</A></LI> |
---|
91 | <LI><A href="https://trac.cc.jyu.fi/projects/npo/wiki/WikiStart">Start |
---|
92 | Page</A></LI> |
---|
93 | <LI><A |
---|
94 | href="https://trac.cc.jyu.fi/projects/npo/wiki/TitleIndex">Index</A></LI> |
---|
95 | <LI class="last"><A href="https://trac.cc.jyu.fi/projects/npo/wiki/Pong/Vaihe1?action=history">History</A></LI> |
---|
96 | </UL> |
---|
97 | <HR> |
---|
98 | </DIV> |
---|
99 | <DIV class="wiki" id="content"> |
---|
100 | <DIV class="wikipage searchable"> |
---|
101 | <DIV class="trac-modifiedby"><SPAN><A title="Version 53 by teeevasa" href="https://trac.cc.jyu.fi/projects/npo/wiki/Pong/Vaihe1?action=diff&version=53">Last |
---|
102 | modified</A> <A title="2014-10-14T09:31:42+03:00 in Timeline" class="timeline" |
---|
103 | href="https://trac.cc.jyu.fi/projects/npo/timeline?from=2014-10-14T09%3A31%3A42%2B03%3A00&precision=second">9 |
---|
104 | months</A> ago</SPAN> <SPAN class="trac-print">Last modified on |
---|
105 | 2014-10-14 09:31:42</SPAN> </DIV> |
---|
106 | <DIV id="wikipage"> |
---|
107 | <P></P> |
---|
108 | <DIV class="wiki-toc trac-nav" style="clear: both;"> |
---|
109 | <H4>Muilla kielillä:</H4> |
---|
110 | <UL> |
---|
111 | <LI><A class="wiki" href="https://trac.cc.jyu.fi/projects/npo/wiki/Pong/En%3AVaihe1">English</A> |
---|
112 | </LI> |
---|
113 | <LI><STRONG>Suomi</STRONG> </LI></UL></DIV> |
---|
114 | <P></P> |
---|
115 | <DIV style="text-align: left; max-width: 700px !important;"></DIV><A href="https://trac.cc.jyu.fi/projects/npo/wiki/Pong/Johdanto"><IMG |
---|
116 | align="left" src="Pong-Vaihe1%20–%20Nuorten%20peliohjelmointikurssi_files/previous_arrow.png"></A> |
---|
117 | <A href="https://trac.cc.jyu.fi/projects/npo/wiki/Pong/Vaihe2"><IMG align="right" |
---|
118 | src="Pong-Vaihe1%20–%20Nuorten%20peliohjelmointikurssi_files/next_arrow.png"></A> |
---|
119 | <P><BR><BR><BR><BR><BR><BR></P> |
---|
120 | <HR> |
---|
121 | |
---|
122 | <P></P> |
---|
123 | <DIV class="wiki-toc"> |
---|
124 | <OL> |
---|
125 | <LI><A href="https://trac.cc.jyu.fi/projects/npo/wiki/Pong/Vaihe1#Pong-pelivaihe1">Pong-peli, |
---|
126 | vaihe 1</A> </LI> |
---|
127 | <LI><A href="https://trac.cc.jyu.fi/projects/npo/wiki/Pong/Vaihe1#a1.Ohjelmoinninaloittaminen">1. |
---|
128 | Ohjelmoinnin aloittaminen</A> </LI> |
---|
129 | <LI><A href="https://trac.cc.jyu.fi/projects/npo/wiki/Pong/Vaihe1#a2.Ohjelmakoodi">2. |
---|
130 | Ohjelmakoodi</A> </LI> |
---|
131 | <LI><A href="https://trac.cc.jyu.fi/projects/npo/wiki/Pong/Vaihe1#a3.Olionluominen">3. |
---|
132 | Olion luominen</A> </LI> |
---|
133 | <LI><A href="https://trac.cc.jyu.fi/projects/npo/wiki/Pong/Vaihe1#a4.Oliopalloksi">4. |
---|
134 | Olio palloksi</A> </LI> |
---|
135 | <LI><A href="https://trac.cc.jyu.fi/projects/npo/wiki/Pong/Vaihe1#a5.Lopputulos">5. |
---|
136 | Lopputulos</A> </LI></OL></DIV> |
---|
137 | <P></P> |
---|
138 | <H1 id="Pong-pelivaihe1">Pong-peli, vaihe 1</H1> |
---|
139 | <P>Tämä on Pong-tutoriaalin osa 1/7. Tämän vaiheen aikana </P> |
---|
140 | <UL> |
---|
141 | <LI><STRONG>Luodaan ruudulla näkyvä pallo</STRONG> </LI></UL> |
---|
142 | <P>Aloitamme pelin luomisen tyhjästä projektista, joka luotiin <A class="wiki" |
---|
143 | href="https://trac.cc.jyu.fi/projects/npo/wiki/PongProjektinLuominen">edellisen |
---|
144 | ohjeen</A> mukaan. </P> |
---|
145 | <P>Voit katsoa tämän ohjeen myös videona (avataksesi uuteen välilehteen paina |
---|
146 | Ctrl + hiiren vasen): <A class="ext-link" href="http://www.youtube.com/watch?v=51XbfQEjSEg"><SPAN |
---|
147 | class="icon"></SPAN>osa 1</A> (kesto 08:57), <A class="ext-link" href="http://www.youtube.com/watch?v=zDEJ3VZNE18"><SPAN |
---|
148 | class="icon"></SPAN>osa 2</A> (06:08). Muista katsoa videot HD-laadulla. </P><A |
---|
149 | href="http://www.youtube.com/watch?v=51XbfQEjSEg"><IMG src="Pong-Vaihe1%20–%20Nuorten%20peliohjelmointikurssi_files/youtube-pong.png"></A> |
---|
150 | <P>Kun projekti on luotu, voit kokeilla ajaa ohjelmaa vaikka samantien |
---|
151 | painamalla näppäimistöstä <SPAN style="background: rgb(240, 236, 232); padding: 0.1em 0.4em; border: 0.2em outset rgb(206, 203, 199); border-image: none; font-size: 0.9em; white-space: nowrap;">F5</SPAN>-näppäintä, |
---|
152 | valikosta Debug -> Start Debugging tai klikkaamalla työkaluriviltä |
---|
153 | Play-symbolia. </P> |
---|
154 | <BLOCKQUOTE> |
---|
155 | <P><IMG title="source:/trunk/help_symbols/try_to_run.png" alt="source:/trunk/help_symbols/try_to_run.png" |
---|
156 | src="Pong-Vaihe1%20–%20Nuorten%20peliohjelmointikurssi_files/try_to_run.png"> |
---|
157 | </P></BLOCKQUOTE>Aluksi pelissä näkyy vain tyhjä ruutu. |
---|
158 | <P>Pelistä pääsee pois painamalla näppäimistöltä <SPAN style="background: rgb(240, 236, 232); padding: 0.1em 0.4em; border: 0.2em outset rgb(206, 203, 199); border-image: none; font-size: 0.9em; white-space: nowrap;">Esc</SPAN> |
---|
159 | (tai <SPAN style="background: rgb(240, 236, 232); padding: 0.1em 0.4em; border: 0.2em outset rgb(206, 203, 199); border-image: none; font-size: 0.9em; white-space: nowrap;">Alt</SPAN> |
---|
160 | + <SPAN style="background: rgb(240, 236, 232); padding: 0.1em 0.4em; border: 0.2em outset rgb(206, 203, 199); border-image: none; font-size: 0.9em; white-space: nowrap;">F4</SPAN>). |
---|
161 | </P> |
---|
162 | <P><IMG src="Pong-Vaihe1%20–%20Nuorten%20peliohjelmointikurssi_files/vs_start_debugging.png"> |
---|
163 | <IMG src="Pong-Vaihe1%20–%20Nuorten%20peliohjelmointikurssi_files/vs_start_debugging2.png"> |
---|
164 | </P> |
---|
165 | <HR> |
---|
166 | |
---|
167 | <P>Tämän vaiheen <EM>lopuksi</EM> peli näyttää suunnilleen tältä: </P> |
---|
168 | <P><IMG width="500" src="Pong-Vaihe1%20–%20Nuorten%20peliohjelmointikurssi_files/pong1.png"> |
---|
169 | </P> |
---|
170 | <H1 id="a1.Ohjelmoinninaloittaminen">1. Ohjelmoinnin aloittaminen</H1> |
---|
171 | <P>Uudessa projektissa on paljon tiedostoja. Projektin tiedostot näkyvät Visual |
---|
172 | Studion oikeassa reunassa. Tässä vaiheessa meitä kiinnostaa ainoastaan tiedosto |
---|
173 | nimeltä <STRONG>Pong.cs</STRONG>, johon tulee C#-ohjelmointikielellä |
---|
174 | kirjoitettavaa koodia. Tuplaklikkaa tuota tiedostoa, jolloin se aukeaa editoriin |
---|
175 | muokattavaksi. </P> |
---|
176 | <BLOCKQUOTE> |
---|
177 | <P><IMG src="Pong-Vaihe1%20–%20Nuorten%20peliohjelmointikurssi_files/SolutionExplorerPong.jpg"> |
---|
178 | </P></BLOCKQUOTE> |
---|
179 | <H1 id="a2.Ohjelmakoodi">2. Ohjelmakoodi</H1> |
---|
180 | <P>Kooditiedosto sisältää pelin koodin eli kuvauksen siitä, mitä peli tekee. |
---|
181 | Tätä koodia lähdemme nyt muokkaamaan. </P> |
---|
182 | <P>Koodia on useita rivejä, mutta nyt keskitymme vain aliohjelmaan nimeltä |
---|
183 | <TT>Begin</TT> (suom. aloita), joka näyttää tältä: </P> |
---|
184 | <DIV class="code"> |
---|
185 | <PRE><SPAN class="k">public</SPAN> override <SPAN class="kt">void</SPAN> Begin<SPAN class="p">()</SPAN> |
---|
186 | <SPAN class="p">{</SPAN> |
---|
187 | <SPAN class="c1">// TODO: Kirjoita ohjelmakoodisi tähän |
---|
188 | </SPAN> |
---|
189 | PhoneBackButton<SPAN class="p">.</SPAN>Listen<SPAN class="p">(</SPAN>ConfirmExit<SPAN class="p">,</SPAN> <SPAN class="s">"Lopeta peli"</SPAN><SPAN class="p">);</SPAN> |
---|
190 | Keyboard<SPAN class="p">.</SPAN>Listen<SPAN class="p">(</SPAN>Key<SPAN class="p">.</SPAN>Escape<SPAN class="p">,</SPAN> ButtonState<SPAN class="p">.</SPAN>Pressed<SPAN class="p">,</SPAN> ConfirmExit<SPAN class="p">,</SPAN> <SPAN class="s">"Lopeta peli"</SPAN><SPAN class="p">);</SPAN> |
---|
191 | <SPAN class="p">}</SPAN> |
---|
192 | </PRE></DIV> |
---|
193 | <P><STRONG>Begin-aliohjelma suoritetaan ensimmäisenä kun peli |
---|
194 | käynnistetään</STRONG>. Se on siten sopiva paikka tehdä pelin alustukset, kuten |
---|
195 | pelihahmojen luominen ja sijoittaminen oikeille paikoilleen. </P> |
---|
196 | <P>Etsi <TT>Begin</TT> koodista. <STRONG>Aliohjelman nimi</STRONG> |
---|
197 | <TT>Begin</TT> on kerrottu ensimmäisen rivin lopussa ja nimen jälkeen on |
---|
198 | <STRONG>kaarisulut</STRONG> ´(´ ja ´)´. </P> |
---|
199 | <P>Nimen ja kaarisulkujen jälkeen tulee <STRONG>aaltosulut</STRONG> ´{´ ja ´}´. |
---|
200 | </P> |
---|
201 | <P><STRONG>Aaltosulkujen väliin kirjoitetaan aliohjelmalle kuuluvat |
---|
202 | koodirivit.</STRONG> </P> |
---|
203 | <P><STRONG>//</STRONG> -alkuinen vihreällä näkyvä rivi on kommentti. Se ei tee |
---|
204 | pelin kannalta mitään, vaan on ainoastaan muistuttamassa pelin ohjelmoijaa eli |
---|
205 | sinua, että pelin alustus tehdään tässä. Voit halutessasi poistaa tuon rivin. |
---|
206 | </P> |
---|
207 | <P>Kommenttirivin jälkeen on kaksi riviä, jotka tekevät peliin |
---|
208 | lopetuspainikkeen. Koska emme nyt tee peliä puhelimelle, <STRONG>voit pyyhkiä |
---|
209 | rivin</STRONG>, joka alkaa sanalla <EM>PhoneBackButton</EM>. </P> |
---|
210 | <H1 id="a3.Olionluominen">3. Olion luominen</H1> |
---|
211 | <P>Ensimmäisenä haluamme lisätä peliimme pallon. Palloa varten luodaan olio, |
---|
212 | joka on tyyppiä <TT>PhysicsObject</TT> eli fysiikkaolio. Koska teemme |
---|
213 | fysiikkapeliä, käytämme fysiikkaolioita, jotka käyttäytyvät fysiikan lakien |
---|
214 | mukaan eli pomppivat, törmäävät, jne. Fysiikkaolio pitää sisällään kappaleille |
---|
215 | kuuluvia ominaisuuksia, kuten esimerkiksi kuvio tai massa. </P> |
---|
216 | <P><STRONG>Kirjoita</STRONG> <TT>Begin</TT>-aliohjelmaan, aaltosulkujen väliin |
---|
217 | uuden fysiikkaolion luominen: </P> |
---|
218 | <DIV class="code"> |
---|
219 | <PRE>PhysicsObject pallo <SPAN class="o">=</SPAN> <SPAN class="k">new</SPAN> PhysicsObject<SPAN class="p">(</SPAN><SPAN class="mf">40.0</SPAN><SPAN class="p">,</SPAN> <SPAN class="mf">40.0</SPAN><SPAN class="p">);</SPAN> |
---|
220 | </PRE></DIV> |
---|
221 | <P>Uusi <TT>PhysicsObject</TT>-tyyppinen olio luodaan ja sijoitetaan |
---|
222 | <TT>PhysicsObject</TT>-tyyppiseen muuttujaan nimeltä <TT>pallo</TT>. </P> |
---|
223 | <UL> |
---|
224 | <LI>Ensin kerrotaan, että käytössämme on <TT>PhysicsObject</TT>-tyyppinen |
---|
225 | muuttuja jonka nimi on <TT>pallo</TT>. </LI></UL> |
---|
226 | <UL> |
---|
227 | <LI>Muuttujan <TT>pallo</TT> arvoksi asetetaan uusi |
---|
228 | <TT>PhysicsObject</TT>-olio, jonka tekee meille samanniminen aliohjelma. |
---|
229 | </LI></UL> |
---|
230 | <UL> |
---|
231 | <LI>Aliohjelman nimen jälkeen annetaan suluissa <STRONG>parametreja</STRONG>, |
---|
232 | jotka kertovat minkä kokoisen fysiikkaolion haluamme. Parametrien |
---|
233 | järjestyksellä <STRONG>on</STRONG> väliä. </LI></UL> |
---|
234 | <P>Fysiikkaolion parametrit ovat desimaalilukuja ja ne annetaan järjestyksessä |
---|
235 | ensin leveys, sitten korkeus. Tässä pallon leveydeksi ja korkeudeksi asetettiin |
---|
236 | <TT>40.0</TT> (huomaa, että desimaaleja erottamaan käytetään |
---|
237 | <STRONG>pistettä</STRONG>). Mittayksikkö voi olla mitä tahansa, voit vaikka |
---|
238 | kuvitella sen olevan senttimetrejä. </P> |
---|
239 | <P>Jotta pallo tulisi osaksi peliä, täytyy se lisätä pelikentän olioiden |
---|
240 | joukkoon. </P> |
---|
241 | <P><STRONG>Kirjoita</STRONG> tämä rivi pallon luomisen jälkeen: </P> |
---|
242 | <DIV class="code"> |
---|
243 | <PRE>Add<SPAN class="p">(</SPAN>pallo<SPAN class="p">);</SPAN> |
---|
244 | </PRE></DIV> |
---|
245 | <P>Komento <TT>Add</TT> lisää sille annetun olion pelikentälle. </P> |
---|
246 | <P>Nyt <TT>Begin</TT>-aliohjelmasi pitäisi näyttää tältä: </P> |
---|
247 | <DIV class="code"> |
---|
248 | <PRE><SPAN class="k">public</SPAN> override <SPAN class="kt">void</SPAN> Begin<SPAN class="p">()</SPAN> |
---|
249 | <SPAN class="p">{</SPAN> |
---|
250 | PhysicsObject pallo <SPAN class="o">=</SPAN> <SPAN class="k">new</SPAN> PhysicsObject<SPAN class="p">(</SPAN><SPAN class="mf">40.0</SPAN><SPAN class="p">,</SPAN> <SPAN class="mf">40.0</SPAN><SPAN class="p">);</SPAN> |
---|
251 | Add<SPAN class="p">(</SPAN>pallo<SPAN class="p">);</SPAN> |
---|
252 | |
---|
253 | Keyboard<SPAN class="p">.</SPAN>Listen<SPAN class="p">(</SPAN>Key<SPAN class="p">.</SPAN>Escape<SPAN class="p">,</SPAN> ButtonState<SPAN class="p">.</SPAN>Pressed<SPAN class="p">,</SPAN> ConfirmExit<SPAN class="p">,</SPAN> <SPAN class="s">"Lopeta peli"</SPAN><SPAN class="p">);</SPAN> |
---|
254 | <SPAN class="p">}</SPAN> |
---|
255 | </PRE></DIV> |
---|
256 | <P><BR></P> |
---|
257 | <P>Muista tallentaa tiedostosi muutaman minuutin välein. Tallentaminen tapahtuu |
---|
258 | joko valitsemalla ''File''-valikosta kohta ''Save Pong.cs'' tai |
---|
259 | näppäinkomennolla <SPAN style="background: rgb(240, 236, 232); padding: 0.1em 0.4em; border: 0.2em outset rgb(206, 203, 199); border-image: none; font-size: 0.9em; white-space: nowrap;">Ctrl</SPAN> |
---|
260 | + <SPAN style="background: rgb(240, 236, 232); padding: 0.1em 0.4em; border: 0.2em outset rgb(206, 203, 199); border-image: none; font-size: 0.9em; white-space: nowrap;">S</SPAN>. |
---|
261 | </P> |
---|
262 | <P>Visual Studio tosin tallentaa työsi myös silloin kun ajat pelin <SPAN style="background: rgb(240, 236, 232); padding: 0.1em 0.4em; border: 0.2em outset rgb(206, 203, 199); border-image: none; font-size: 0.9em; white-space: nowrap;">F5</SPAN>-näppäimellä. |
---|
263 | </P> |
---|
264 | <P>Kokeile toimiiko peli! </P> |
---|
265 | <BLOCKQUOTE> |
---|
266 | <P><IMG title="source:/trunk/help_symbols/try_to_run.png" alt="source:/trunk/help_symbols/try_to_run.png" |
---|
267 | src="Pong-Vaihe1%20–%20Nuorten%20peliohjelmointikurssi_files/try_to_run.png"> |
---|
268 | </P></BLOCKQUOTE> |
---|
269 | <H1 id="a4.Oliopalloksi">4. Olio palloksi</H1> |
---|
270 | <P>Pallomme ei vielä näytä pallolta. Fysiikkaoliolla on kuitenkin olemassa |
---|
271 | sellainen ominaisuus kuin <TT>Shape</TT> eli muoto. Haluamme muuttaa |
---|
272 | pallo-nimisen fysiikkaoliomme muoto-ominaisuuden ympyräksi. Olion luonnin |
---|
273 | jälkeen sen muotoa voidaan muuttaa seuraavalla tavalla: </P> |
---|
274 | <DIV class="code"> |
---|
275 | <PRE>pallo<SPAN class="p">.</SPAN>Shape <SPAN class="o">=</SPAN> Shape<SPAN class="p">.</SPAN>Circle<SPAN class="p">;</SPAN> |
---|
276 | </PRE></DIV> |
---|
277 | <P>Pallon edessä ei enää tarvitse kirjoittaa <TT>PhysicsObject</TT>, kun se on |
---|
278 | kerran esitelty sen tyyppisenä muuttujana. Muodon muuttaminen täytyy tehdä vasta |
---|
279 | <EM>olion luonnin jälkeen</EM>. Jos se tehtäisiin sitä ennen, eihän edes olisi |
---|
280 | vielä olemassa mitään fysiikkaobjektia nimeltä pallo. </P> |
---|
281 | <P>Pallon halkaisijaksi tulee nyt 40.0, eli sen koko määräytyy olion luonnissa |
---|
282 | annetuista leveydestä ja korkeudesta. </P> |
---|
283 | <P>Lisää tämä rivi pallon luonnin ja kenttään lisäämisen väliin. Nyt |
---|
284 | <TT>Begin</TT>-aliohjelman pitäisi näyttää suunnilleen tältä: </P> |
---|
285 | <DIV class="code"> |
---|
286 | <PRE><SPAN class="k">public</SPAN> override <SPAN class="kt">void</SPAN> Begin<SPAN class="p">()</SPAN> |
---|
287 | <SPAN class="p">{</SPAN> |
---|
288 | PhysicsObject pallo <SPAN class="o">=</SPAN> <SPAN class="k">new</SPAN> PhysicsObject<SPAN class="p">(</SPAN><SPAN class="mf">40.0</SPAN><SPAN class="p">,</SPAN> <SPAN class="mf">40.0</SPAN><SPAN class="p">);</SPAN> |
---|
289 | pallo<SPAN class="p">.</SPAN>Shape <SPAN class="o">=</SPAN> Shape<SPAN class="p">.</SPAN>Circle<SPAN class="p">;</SPAN> |
---|
290 | Add<SPAN class="p">(</SPAN>pallo<SPAN class="p">);</SPAN> |
---|
291 | |
---|
292 | Keyboard<SPAN class="p">.</SPAN>Listen<SPAN class="p">(</SPAN>Key<SPAN class="p">.</SPAN>Escape<SPAN class="p">,</SPAN> ButtonState<SPAN class="p">.</SPAN>Pressed<SPAN class="p">,</SPAN> ConfirmExit<SPAN class="p">,</SPAN> <SPAN class="s">"Lopeta peli"</SPAN><SPAN class="p">);</SPAN> |
---|
293 | <SPAN class="p">}</SPAN> |
---|
294 | </PRE></DIV> |
---|
295 | <P>Huomaa, että vaikka meillä oli muuttuja nimeltä pallo, se olikin aluksi |
---|
296 | pelissä neliön muotoinen. <EM>Tietokone ei siis ymmärrä mitä muuttujien nimet |
---|
297 | tarkoittavat.</EM> Se ei yleensä välitä niistä niin kauan kuin nimiä vain |
---|
298 | käyttää sen mielestä oikein. Nimet ovat kuitenkin tärkeitä ihmisille, jotka |
---|
299 | yrittävät ymmärtää ohjelmakoodia. Hyvin ja kuvaavasti nimetyt muuttujat ja |
---|
300 | aliohjelmat helpottavat huomattavasti koodin lukemista niin koodin kirjoittajan |
---|
301 | kuin lukijankin kannalta! Eihän olisi ymmärrettävää antaa pallolle nimeksi |
---|
302 | esimerkiksi "kolmio", "olio1" tai "sdaydfs". </P>Nyt kun ajat ohjelman (<SPAN |
---|
303 | style="background: rgb(240, 236, 232); padding: 0.1em 0.4em; border: 0.2em outset rgb(206, 203, 199); border-image: none; font-size: 0.9em; white-space: nowrap;">F5</SPAN>-näppäin), |
---|
304 | pitäisi keskellä ruutua näkyä pallo, kuten tämän sivun alussa olevassa kuvassa. |
---|
305 | <BLOCKQUOTE> |
---|
306 | <P><IMG title="source:/trunk/help_symbols/try_to_run.png" alt="source:/trunk/help_symbols/try_to_run.png" |
---|
307 | src="Pong-Vaihe1%20–%20Nuorten%20peliohjelmointikurssi_files/try_to_run.png"> |
---|
308 | </P></BLOCKQUOTE> |
---|
309 | <H1 id="a5.Lopputulos">5. Lopputulos</H1> |
---|
310 | <P>Valmiin ensimmäisen vaiheen koodin näet seuraavasta linkistä: </P> |
---|
311 | <BLOCKQUOTE> |
---|
312 | <P><A class="ext-link" href="https://trac.cc.jyu.fi/projects/npo/browser/trunk/esimerkit/Pong/Vaihe1/Pong.cs"><SPAN |
---|
313 | class="icon"></SPAN>https://trac.cc.jyu.fi/projects/npo/browser/trunk/esimerkit/Pong/Vaihe1/Pong.cs</A> |
---|
314 | </P></BLOCKQUOTE><A href="https://trac.cc.jyu.fi/projects/npo/wiki/Pong/Johdanto"><IMG |
---|
315 | align="left" src="Pong-Vaihe1%20–%20Nuorten%20peliohjelmointikurssi_files/previous_arrow.png"></A> |
---|
316 | <A href="https://trac.cc.jyu.fi/projects/npo/wiki/Pong/Vaihe2"><IMG align="right" |
---|
317 | src="Pong-Vaihe1%20–%20Nuorten%20peliohjelmointikurssi_files/next_arrow.png"></A> |
---|
318 | <P><BR><BR><BR><BR><BR><BR></P></DIV></DIV> |
---|
319 | <DIV id="attachments"> |
---|
320 | <H3 class="foldable">Attachments</H3> |
---|
321 | <UL> |
---|
322 | <LI><A title="View attachment" href="https://trac.cc.jyu.fi/projects/npo/attachment/wiki/Pong/Vaihe1/youtube-pong.png">youtube-pong.png</A><A |
---|
323 | title="Download" class="trac-rawlink" href="https://trac.cc.jyu.fi/projects/npo/raw-attachment/wiki/Pong/Vaihe1/youtube-pong.png"></A> |
---|
324 | (<SPAN title="11788 bytes">11.5 KB</SPAN>) - added by |
---|
325 | <EM>anlakane</EM> <A title="2010-07-15T12:47:46+03:00 in Timeline" class="timeline" |
---|
326 | href="https://trac.cc.jyu.fi/projects/npo/timeline?from=2010-07-15T12%3A47%3A46%2B03%3A00&precision=second">5 |
---|
327 | years</A> ago. </LI></UL></DIV></DIV> |
---|
328 | <SCRIPT type="text/javascript"> |
---|
329 | jQuery.loadStyleSheet("/projects/npo/pygments/trac.css", "text/css"); |
---|
330 | </SCRIPT> |
---|
331 | |
---|
332 | <DIV id="altlinks"> |
---|
333 | <H3>Download in other formats:</H3> |
---|
334 | <UL> |
---|
335 | <LI class="first"><A href="https://trac.cc.jyu.fi/projects/npo/wiki/Pong/Vaihe1?format=txt" |
---|
336 | rel="nofollow">Plain Text</A> </LI> |
---|
337 | <LI class="last"> <A href="https://trac.cc.jyu.fi/projects/npo/wiki/Pong/Vaihe1?format=pdf" |
---|
338 | rel="nofollow">PDF</A> </LI> </UL></DIV></DIV> |
---|
339 | <DIV id="footer" lang="en" lang="en" xml:lang="en"> |
---|
340 | <HR> |
---|
341 | <A id="tracpowered" href="http://trac.edgewall.org/"><IMG width="107" |
---|
342 | height="30" alt="Trac Powered" src="Pong-Vaihe1%20–%20Nuorten%20peliohjelmointikurssi_files/trac_logo_mini.png"></A> |
---|
343 | |
---|
344 | <P class="left">Powered by <A |
---|
345 | href="https://trac.cc.jyu.fi/projects/npo/about"><STRONG>Trac |
---|
346 | 0.12.5</STRONG></A><BR> By <A href="http://www.edgewall.org/">Edgewall |
---|
347 | Software</A>.</P> |
---|
348 | <P class="right">Visit the Trac open source project at<BR><A href="http://trac.edgewall.org/">http://trac.edgewall.org/</A></P></DIV> |
---|
349 | <DIV class="alalinkkipalkki" id="sitefooter"></DIV></BODY></HTML> |
---|