Silverlight/XAML – Learning by Coding

[ spiel_farbenmerken.xaml --> Grafik anzeigen ]

  1: <?xml version="1.0" encoding="UTF-8"?>
  2: <!-- coded by Thomas Meinike 02/08 -->
  3: <Canvas xmlns="http://schemas.microsoft.com/client/2007"
  4:         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  5:         x:Name="spielfeld" Loaded="FarbenMerkenStart"><!-- 36 Felder -->
  6: 
  7:   <!-- Portierung der SVG-Variante by Thomas Meinike 02/04
  8:        http://svglbc.datenverdrahten.de/?code=spiel_farbenmerken2&znr=on -->
  9: 
 10:   <!-- Reihe 1 -->
 11:   <Rectangle x:Name="f1" Canvas.Left="20" Canvas.Top="20" Width="50" Height="50" Stroke="#999"/>
 12:   <Image x:Name="d1" Source="media/deck.png" Canvas.Left="20" Canvas.Top="20"/>
 13:   <Rectangle x:Name="f2" Canvas.Left="70" Canvas.Top="20" Width="50" Height="50" Stroke="#999"/>
 14:   <Image x:Name="d2" Source="media/deck.png" Canvas.Left="70" Canvas.Top="20"/>
 15:   <Rectangle x:Name="f3" Canvas.Left="120" Canvas.Top="20" Width="50" Height="50" Stroke="#999"/>
 16:   <Image x:Name="d3" Source="media/deck.png" Canvas.Left="120" Canvas.Top="20"/>
 17:   <Rectangle x:Name="f4" Canvas.Left="170" Canvas.Top="20" Width="50" Height="50" Stroke="#999"/>
 18:   <Image x:Name="d4" Source="media/deck.png" Canvas.Left="170" Canvas.Top="20"/>
 19:   <Rectangle x:Name="f5" Canvas.Left="220" Canvas.Top="20" Width="50" Height="50" Stroke="#999"/>
 20:   <Image x:Name="d5" Source="media/deck.png" Canvas.Left="220" Canvas.Top="20"/>
 21:   <Rectangle x:Name="f6" Canvas.Left="270" Canvas.Top="20" Width="50" Height="50" Stroke="#999"/>
 22:   <Image x:Name="d6" Source="media/deck.png" Canvas.Left="270" Canvas.Top="20"/>
 23: 
 24:   <!-- Reihe 2 -->
 25:   <Rectangle x:Name="f7" Canvas.Left="20" Canvas.Top="70" Width="50" Height="50" Stroke="#999"/>
 26:   <Image x:Name="d7" Source="media/deck.png" Canvas.Left="20" Canvas.Top="70"/>
 27:   <Rectangle x:Name="f8" Canvas.Left="70" Canvas.Top="70" Width="50" Height="50" Stroke="#999"/>
 28:   <Image x:Name="d8" Source="media/deck.png" Canvas.Left="70" Canvas.Top="70"/>
 29:   <Rectangle x:Name="f9" Canvas.Left="120" Canvas.Top="70" Width="50" Height="50" Stroke="#999"/>
 30:   <Image x:Name="d9" Source="media/deck.png" Canvas.Left="120" Canvas.Top="70"/>
 31:   <Rectangle x:Name="f10" Canvas.Left="170" Canvas.Top="70" Width="50" Height="50" Stroke="#999"/>
 32:   <Image x:Name="d10" Source="media/deck.png" Canvas.Left="170" Canvas.Top="70"/>
 33:   <Rectangle x:Name="f11" Canvas.Left="220" Canvas.Top="70" Width="50" Height="50" Stroke="#999"/>
 34:   <Image x:Name="d11" Source="media/deck.png" Canvas.Left="220" Canvas.Top="70"/>
 35:   <Rectangle x:Name="f12" Canvas.Left="270" Canvas.Top="70" Width="50" Height="50" Stroke="#999"/>
 36:   <Image x:Name="d12" Source="media/deck.png" Canvas.Left="270" Canvas.Top="70"/>
 37: 
 38:   <!-- Reihe 3 -->
 39:   <Rectangle x:Name="f13" Canvas.Left="20" Canvas.Top="120" Width="50" Height="50" Stroke="#999"/>
 40:   <Image x:Name="d13" Source="media/deck.png" Canvas.Left="20" Canvas.Top="120"/>
 41:   <Rectangle x:Name="f14" Canvas.Left="70" Canvas.Top="120" Width="50" Height="50" Stroke="#999"/>
 42:   <Image x:Name="d14" Source="media/deck.png" Canvas.Left="70" Canvas.Top="120"/>
 43:   <Rectangle x:Name="f15" Canvas.Left="120" Canvas.Top="120" Width="50" Height="50" Stroke="#999"/>
 44:   <Image x:Name="d15" Source="media/deck.png" Canvas.Left="120" Canvas.Top="120"/>
 45:   <Rectangle x:Name="f16" Canvas.Left="170" Canvas.Top="120" Width="50" Height="50" Stroke="#999"/>
 46:   <Image x:Name="d16" Source="media/deck.png" Canvas.Left="170" Canvas.Top="120"/>
 47:   <Rectangle x:Name="f17" Canvas.Left="220" Canvas.Top="120" Width="50" Height="50" Stroke="#999"/>
 48:   <Image x:Name="d17" Source="media/deck.png" Canvas.Left="220" Canvas.Top="120"/>
 49:   <Rectangle x:Name="f18" Canvas.Left="270" Canvas.Top="120" Width="50" Height="50" Stroke="#999"/>
 50:   <Image x:Name="d18" Source="media/deck.png" Canvas.Left="270" Canvas.Top="120"/>
 51: 
 52:   <!-- Reihe 4 -->
 53:   <Rectangle x:Name="f19" Canvas.Left="20" Canvas.Top="170" Width="50" Height="50" Stroke="#999"/>
 54:   <Image x:Name="d19" Source="media/deck.png" Canvas.Left="20" Canvas.Top="170"/>
 55:   <Rectangle x:Name="f20" Canvas.Left="70" Canvas.Top="170" Width="50" Height="50" Stroke="#999"/>
 56:   <Image x:Name="d20" Source="media/deck.png" Canvas.Left="70" Canvas.Top="170"/>
 57:   <Rectangle x:Name="f21" Canvas.Left="120" Canvas.Top="170" Width="50" Height="50" Stroke="#999"/>
 58:   <Image x:Name="d21" Source="media/deck.png" Canvas.Left="120" Canvas.Top="170"/>
 59:   <Rectangle x:Name="f22" Canvas.Left="170" Canvas.Top="170" Width="50" Height="50" Stroke="#999"/>
 60:   <Image x:Name="d22" Source="media/deck.png" Canvas.Left="170" Canvas.Top="170"/>
 61:   <Rectangle x:Name="f23" Canvas.Left="220" Canvas.Top="170" Width="50" Height="50" Stroke="#999"/>
 62:   <Image x:Name="d23" Source="media/deck.png" Canvas.Left="220" Canvas.Top="170"/>
 63:   <Rectangle x:Name="f24" Canvas.Left="270" Canvas.Top="170" Width="50" Height="50" Stroke="#999"/>
 64:   <Image x:Name="d24" Source="media/deck.png" Canvas.Left="270" Canvas.Top="170"/>
 65: 
 66:   <!-- Reihe 5 -->
 67:   <Rectangle x:Name="f25" Canvas.Left="20" Canvas.Top="220" Width="50" Height="50" Stroke="#999"/>
 68:   <Image x:Name="d25" Source="media/deck.png" Canvas.Left="20" Canvas.Top="220"/>
 69:   <Rectangle x:Name="f26" Canvas.Left="70" Canvas.Top="220" Width="50" Height="50" Stroke="#999"/>
 70:   <Image x:Name="d26" Source="media/deck.png" Canvas.Left="70" Canvas.Top="220"/>
 71:   <Rectangle x:Name="f27" Canvas.Left="120" Canvas.Top="220" Width="50" Height="50" Stroke="#999"/>
 72:   <Image x:Name="d27" Source="media/deck.png" Canvas.Left="120" Canvas.Top="220"/>
 73:   <Rectangle x:Name="f28" Canvas.Left="170" Canvas.Top="220" Width="50" Height="50" Stroke="#999"/>
 74:   <Image x:Name="d28" Source="media/deck.png" Canvas.Left="170" Canvas.Top="220"/>
 75:   <Rectangle x:Name="f29" Canvas.Left="220" Canvas.Top="220" Width="50" Height="50" Stroke="#999"/>
 76:   <Image x:Name="d29" Source="media/deck.png" Canvas.Left="220" Canvas.Top="220"/>
 77:   <Rectangle x:Name="f30" Canvas.Left="270" Canvas.Top="220" Width="50" Height="50" Stroke="#999"/>
 78:   <Image x:Name="d30" Source="media/deck.png" Canvas.Left="270" Canvas.Top="220"/>
 79: 
 80:   <!-- Reihe 6 -->
 81:   <Rectangle x:Name="f31" Canvas.Left="20" Canvas.Top="270" Width="50" Height="50" Stroke="#999"/>
 82:   <Image x:Name="d31" Source="media/deck.png" Canvas.Left="20" Canvas.Top="270"/>
 83:   <Rectangle x:Name="f32" Canvas.Left="70" Canvas.Top="270" Width="50" Height="50" Stroke="#999"/>
 84:   <Image x:Name="d32" Source="media/deck.png" Canvas.Left="70" Canvas.Top="270"/>
 85:   <Rectangle x:Name="f33" Canvas.Left="120" Canvas.Top="270" Width="50" Height="50" Stroke="#999"/>
 86:   <Image x:Name="d33" Source="media/deck.png" Canvas.Left="120" Canvas.Top="270"/>
 87:   <Rectangle x:Name="f34" Canvas.Left="170" Canvas.Top="270" Width="50" Height="50" Stroke="#999"/>
 88:   <Image x:Name="d34" Source="media/deck.png" Canvas.Left="170" Canvas.Top="270"/>
 89:   <Rectangle x:Name="f35" Canvas.Left="220" Canvas.Top="270" Width="50" Height="50" Stroke="#999"/>
 90:   <Image x:Name="d35" Source="media/deck.png" Canvas.Left="220" Canvas.Top="270"/>
 91:   <Rectangle x:Name="f36" Canvas.Left="270" Canvas.Top="270" Width="50" Height="50" Stroke="#999"/>
 92:   <Image x:Name="d36" Source="media/deck.png" Canvas.Left="270" Canvas.Top="270"/>
 93: 
 94:   <TextBlock Canvas.Left="70" Canvas.Top="330" FontFamily="Arial" FontSize="12" Foreground="#000">
 95:     <Run Text="Gefundene Paare: "/><Run x:Name="p" Foreground="#F00" Text="0"/>
 96:   </TextBlock>
 97: 
 98:   <TextBlock Canvas.Left="200" Canvas.Top="330" FontFamily="Arial" FontSize="12" Foreground="#000">
 99:     <Run Text="Versuche: "/><Run x:Name="v" Foreground="#F00" Text="0"/>
100:   </TextBlock>
101: 
102:   <TextBlock Canvas.Left="110" Canvas.Top="350" FontFamily="Arial" FontSize="12" Foreground="#00C"
103:     Text="Neues Spiel" MouseLeftButtonDown="NeuesSpiel" MouseEnter="TextOver" MouseLeave="TextOut"/>
104: 
105:   <TextBlock Canvas.Left="200" Canvas.Top="350" FontFamily="Arial" FontSize="12" Foreground="#00C"
106:     Text="Hilfe" MouseLeftButtonDown="HilfeAn" MouseEnter="TextOver" MouseLeave="TextOut"/>
107: 
108: 
109:   <!-- // zusätzlich verwendeter JavaScript-Code:
110: 
111:   var colors=["#F00","#090","#FF0","#00F","#0FF","#F0F","#AAA","#FC6","#FCC",
112:               "#C03","#CF6","#EEE","#069","#0CC","#FFC","#C69","#FFF","#000"];
113:   var anzahl=colors.length*2,zahlen,click1=false,click2=false,clnr1=0,clnr2=0,
114:       clicks=0,versuche=0,paare=0,feld1,feld2,temp,hilfe=false;
115:   var p_obj,v_obj,spielfeld// global
116: 
117:   function InitRandom()
118:   {
119:     var neuezahl,i,k=0;
120:     zahlen=new Array(anzahl);
121: 
122:     for(var i=0;i<anzahl;i++)
123:     {
124:       neuezahl=Zufallszahl(1,colors.length);
125:       for(j=0;j<anzahl;j++)
126:       {
127:         if(zahlen[j]==neuezahl)k++;
128:       }
129:       if(k<2)zahlen[i]=neuezahl;
130:       else
131:       {
132:         k=0;
133:         i=i-1;
134:       }
135:     }
136: 
137:     for(var i=0;i<anzahl;i++)
138:     {
139:       spielfeld.findName("f"+(i+1)).fill=colors[zahlen[i]-1];
140:     }
141:   }
142: 
143: 
144:   function FarbenMerkenStart(sender,eventArgs)
145:   {
146:     spielfeld=sender;
147:     spielfeld.cursor="None";
148:     p_obj=sender.findName("p");
149:     v_obj=sender.findName("v");
150:     LauscherAn();
151:     setTimeout("NeuesSpiel()",3000);
152:   }
153: 
154: 
155:   function NeuesSpiel()
156:   {
157:    if(!hilfe)
158:     {
159:       AllesVerstecken();
160:       paare=0;
161:       p_obj.text=paare.toString();
162:       versuche=0;
163:       v_obj.text=versuche.toString();
164:       InitRandom(); 
165:       spielfeld.cursor="Default";
166:     }
167:   }
168: 
169: 
170:   function Check(sender,eventArgs)
171:   {
172:     var obj,feldid,feldnr;
173: 
174:     obj=sender;
175:     feldid=obj.Name;
176:     feldnr=feldid.substring(1);
177: 
178:     if(obj.visibility=="Visible" && spielfeld.cursor=="Default" && paare<anzahl/2)
179:     {
180:       clicks++;
181:       versuche++;
182:     }
183: 
184:     if(clicks==1)
185:     {
186:       click1=true;
187:       feld1=feldnr;
188:       obj.visibility="Collapsed";
189:       clnr1=zahlen[feld1-1];
190:     }
191:     else if(clicks==&& click1)
192:     {
193:       click2=true;
194:       feld2=feldnr;
195:       obj.visibility="Collapsed";
196:       clnr2=zahlen[feld2-1];
197:     }
198: 
199:     if(click1 && click2)
200:     {          
201:       if(clnr1==clnr2)paare++;
202:       else
203:       {
204:         spielfeld.cursor="None";
205:         setTimeout(function(){Nochmal(feld1,feld2);},1000);
206:       }
207:       clicks=0;
208:       click1=false;
209:       click2=false;
210:     }
211: 
212:     if(versuche%2==0)
213:     {
214:       p_obj.text=paare.toString();
215:       v_obj.text=(versuche/2).toString();
216:     }
217:   }
218: 
219: 
220:   function Nochmal(feld1,feld2)
221:   {
222:     spielfeld.findName("d"+feld1).visibility="Visible";
223:     spielfeld.findName("d"+feld2).visibility="Visible";
224:     spielfeld.cursor="Default";
225:   }
226: 
227: 
228:   function AllesVerstecken()
229:   {
230:     for(var i=0;i<anzahl;i++)
231:     {
232:       spielfeld.findName("d"+(i+1)).visibility="Visible";
233:     }
234:   }
235: 
236: 
237:   function LauscherAn()
238:   {
239:     for(var i=0;i<anzahl;i++)
240:     {
241:       spielfeld.findName("d"+(i+1)).addEventListener("MouseLeftButtonDown",Check);
242:     }
243:   }
244: 
245: 
246: 
247:   function HilfeAn()
248:   {
249:     if(!hilfe)
250:     {
251:       hilfe=!hilfe;
252:       spielfeld.cursor="None";
253:       temp=new Array(anzahl);
254: 
255:       for(var i=0;i<anzahl;i++)
256:       {
257:         if(spielfeld.findName("d"+(i+1)).visibility=="Visible")
258:         {
259:           temp[i]=true;
260:           spielfeld.findName("d"+(i+1)).visibility="Collapsed";
261:         }
262:         else temp[i]=false;
263:       }
264:       setTimeout("HilfeAus()",3000);
265:     }
266:   }
267: 
268: 
269:   function HilfeAus()
270:   {
271:     for(var i=0;i<anzahl;i++)
272:     {
273:       if(temp[i])
274:       {
275:         spielfeld.findName("d"+(i+1)).visibility="Visible";
276:       }
277:     }
278:     spielfeld.cursor="Default";
279:     hilfe=!hilfe;
280:   }
281: 
282: 
283:   function Zufallszahl(von,bis)
284:   {
285:     return Math.floor(von+(bis-von+1)*Math.random());
286:   }
287: 
288: 
289:   function TextOver(sender,eventArgs)
290:   {
291:     var txt_obj=sender;
292: 
293:     txt_obj.cursor="Hand";
294:     txt_obj.foreGround="#F00";
295:     txt_obj.textDecorations="Underline";
296:   }
297: 
298: 
299:   function TextOut(sender,eventArgs)
300:   {
301:     var txt_obj=sender;
302: 
303:     txt_obj.cursor="Default";
304:     txt_obj.foreGround="#00C";
305:     txt_obj.textDecorations="None";
306:   }
307: 
308:   -->
309: 
310: </Canvas>

[zum Anfang]