- Timestamp:
- 2015-06-05 10:53:38 (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
2015/23/OskuL/FysiikkaPeli2/FysiikkaPeli2/FysiikkaPeli2/space race.cs
r5877 r5879 21 21 public override void Begin() 22 22 { 23 AloitaPeli(); 24 25 26 27 28 } 29 private void LuoKentta() 30 { 31 ColorTileMap ruudut = ColorTileMap.FromLevelAsset("SPACERACE"); 32 ruudut.SetTileMethod(Color.Cyan, LuoPelaaja1); 33 ruudut.SetTileMethod(Color.White, LuoPistetynnyri); 34 ruudut.SetTileMethod(Color.Gold, LuoPelaaja2); 35 ruudut.SetTileMethod(Color.Black, LuoAsteroidi); 36 ruudut.SetTileMethod(Color.FromHexCode("0026FF"), LuoMaali); 37 ruudut.SetTileMethod(Color.Red, LuoReuna); 38 //Level.Background.CreateStars(); 39 40 41 ruudut.Execute(20, 20); 42 43 Level.Background.Color = Color.Black; 44 Level.Size = new Vector(3000.0, 1800.0); 45 46 Level.Background.Image = LoadImage("earth"); 47 Level.Background.ScaleToLevel(); 48 49 //GameObject tausta = new GameObject(LoadImage("Earth")); 50 51 //Add(tausta, -3); 52 //Image taustakuva = LoadImage("space"); 53 //GameObject taustaPilvet = new GameObject(Screen.Width * 1.5, Screen.Height * 1.5 ); 54 //taustaPilvet.Image = taustakuva; 55 //Add(taustaPilvet, -3); 56 //Layers[-3].RelativeTransition = new Vector(0.5, 0.5); 57 58 59 60 //Level.Background.Scale = 2.0; 61 //Level.Size = Level.Size * 2; 62 //Level.Background. 63 } 64 65 DoubleMeter LuoElamaLaskuri(Double x, Double y, PhysicsObject pelaaja) 66 { 67 DoubleMeter elamaLaskuri = new DoubleMeter(10); 68 elamaLaskuri.MaxValue = 10; 69 70 if (pelaaja.Tag.Equals("eka")) 71 { 72 elamaLaskuri.LowerLimit += ElamaLoppui1; 73 } 74 75 if (pelaaja.Tag.Equals("toka")) 76 { 77 elamaLaskuri.LowerLimit += ElamaLoppui2; 78 } 79 80 ProgressBar elamaPalkki = new ProgressBar(150, 20); 81 elamaPalkki.X = x; 82 elamaPalkki.Y = y; 83 elamaPalkki.BindTo(elamaLaskuri); 84 elamaPalkki.Color = Color.Transparent; 85 elamaPalkki.BarColor = Color.Red; 86 elamaPalkki.BorderColor = Color.Black; 87 Add(elamaPalkki); 88 return elamaLaskuri; 89 90 } 91 92 93 void LuoPistelaskuri1() 94 { 95 pisteLaskuri1 = new IntMeter(0); 96 97 Label pisteNaytto = new Label(); 98 pisteNaytto.X = Screen.Left + 500; 99 pisteNaytto.Y = Screen.Top - 100; 100 pisteNaytto.TextColor = Color.Black; 101 pisteNaytto.Color = Color.White; 102 pisteNaytto.Title = "Pisteet"; 103 pisteNaytto.BindTo(pisteLaskuri1); 104 IntMeter keratytEsineet = new IntMeter(0); 105 pisteLaskuri1.MaxValue = 10; 106 pisteLaskuri1.UpperLimit += delegate { KaikkiKeratty(pelaaja1); }; 107 Add(pisteNaytto); 108 } 109 110 void LuoPistelaskuri2() 111 { 112 pisteLaskuri2 = new IntMeter(0); 113 114 Label pisteNaytto = new Label(); 115 pisteNaytto.X = Screen.Right - 500; 116 pisteNaytto.Y = Screen.Top - 100; 117 pisteNaytto.TextColor = Color.Black; 118 pisteNaytto.Color = Color.White; 119 pisteNaytto.Title = "Pisteet"; 120 pisteNaytto.BindTo(pisteLaskuri2); 121 IntMeter keratytEsineet = new IntMeter(0); 122 pisteLaskuri2.MaxValue = 10; 123 pisteLaskuri2.UpperLimit += delegate { KaikkiKeratty(pelaaja2); }; 124 Add(pisteNaytto); 125 } 126 127 void KaikkiKeratty(PhysicsObject pelaaja) 128 { 129 // "moi pelaaja " + pelaaja.Tag + "!!!" 130 131 // moi pelaaja eka!!! 132 133 MessageDisplay.Add("Maali auki " + pelaaja.Tag + "lle pelaajalle"); 134 AktivoiMaali(pelaaja); 135 } 136 137 void ElamaLoppui1() 138 { 139 MessageDisplay.Add("Hävisit, paremmin ensikerralla"); 140 pelaaja1.Destroy(); 141 Keyboard.Disable(Key.Up); 142 Keyboard.Disable(Key.Right); 143 Keyboard.Disable(Key.Left); 144 Keyboard.Disable(Key.Down); 145 } 146 147 void ElamaLoppui2() 148 { 149 MessageDisplay.Add("Hävisit, paremmin ensikerralla"); 150 pelaaja2.Destroy(); 151 Keyboard.Disable(Key.W); 152 Keyboard.Disable(Key.A); 153 Keyboard.Disable(Key.S); 154 Keyboard.Disable(Key.D); 155 } 156 private void LuoOhjaimet() 157 { 158 Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, "Liikutetaan pelaajaa", 1, 1); 159 Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, "käännä oikealle", 1, 2); 160 Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, "käännä vasemmalle", 1, 3); 161 Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, "jarru taaksepäin", 1, 4); 162 163 Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa, "Liikutetaan pelaajaa", 2, 1); 164 Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaajaa, "käännä oikealle", 2, 2); 165 Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa, "käännä vasemmalle", 2, 3); 166 Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaa, "jarru taaksepäin", 2, 4); 167 Keyboard.Listen(Key.R, ButtonState.Pressed, AloitaPeli, "aloita peli uudestaan"); 168 } 169 private void LiikutaPelaajaa(int pelaajaNro, int liikkeenTyyppi) 170 { 171 switch (pelaajaNro) 172 { 173 case 1: 174 switch (liikkeenTyyppi) 175 { 176 case 1: 177 pelaaja1.Push(Vector.FromLengthAndAngle(250.0, pelaaja1.Angle));//kaasu eteen 178 break; 179 case 2: 180 pelaaja1.Angle += Angle.FromDegrees(-1.5);//oikealle=myötäpäivään 181 break; 182 case 3: 183 pelaaja1.Angle += Angle.FromDegrees(1.5);//vasemmalle=vastapäivään 184 break; 185 case 4: 186 pelaaja1.Push(-Vector.FromLengthAndAngle(250.0, pelaaja1.Angle)); 187 break; 188 } 189 190 break; 191 case 2: 192 switch (liikkeenTyyppi) 193 { 194 case 1: 195 pelaaja2.Push(Vector.FromLengthAndAngle(250.0, pelaaja2.Angle));//kaasu eteen 196 break; 197 case 2: 198 pelaaja2.Angle += Angle.FromDegrees(-2.0);//oikealle=myötäpäivään 199 break; 200 case 3: 201 pelaaja2.Angle += Angle.FromDegrees(2.0);//vasemmalle=vastapäivään 202 break; 203 case 4: 204 pelaaja2.Push(-Vector.FromLengthAndAngle(250.0, pelaaja2.Angle)); 205 break; 206 } 207 break; 208 } 209 } 210 211 private void LuoAsteroidi(Vector paikka, double leveys, double korkeus) 212 { 213 asteroidi = new PhysicsObject(30, 30); 214 Image c = LoadImage("asteroid"); 215 asteroidi.Image = c; 216 asteroidi.Position = paikka; 217 asteroidi.Tag = "asteroid"; 218 Add(asteroidi); 219 } 220 private void LuoPelaaja1(Vector paikka, double leveys, double korkeus) 221 { 222 pelaaja1 = new PhysicsObject(30, 30); 223 Image c = LoadImage("ship"); 224 pelaaja1.Image = c; 225 pelaaja1.Position = paikka; 226 pelaaja1.Tag = "eka"; 227 pelaaja1.AngularDamping = 0.9; 228 Add(pelaaja1); 229 pelaaja1.LinearDamping = 0.98; 230 AddCollisionHandler(pelaaja1, "asteroid", PelaajaOsuu); 231 AddCollisionHandler(pelaaja1, "piste", PelaajaOsuuPisteeseen); 232 } 233 private void LuoPelaaja2(Vector paikka, double leveys, double korkeus) 234 { 235 pelaaja2 = new PhysicsObject(30, 30); 236 Image c = LoadImage("ship"); 237 pelaaja2.Image = c; 238 239 pelaaja2.Position = paikka; 240 pelaaja2.Tag = "toka"; 241 pelaaja2.AngularDamping = 0.9; 242 Add(pelaaja2); 243 pelaaja2.LinearDamping = 0.98; 244 AddCollisionHandler(pelaaja2, "asteroid", PelaajaOsuu); 245 AddCollisionHandler(pelaaja2, "piste", PelaajaOsuuPisteeseen); 246 } 247 private void LuoReuna(Vector paikka, double leveys, double korkeus) 248 { 249 PhysicsObject reuna = PhysicsObject.CreateStaticObject(20, 20); 250 reuna.Position = paikka; 251 Add(reuna); 252 reuna.Color = Color.Transparent; 253 } 254 private void LuoMaali(Vector paikka, double leveys, double korkeus) 255 { 256 maali = PhysicsObject.CreateStaticObject(20, 20); 257 maali.Position = paikka; 258 259 Add(maali); 260 maali.Color = Color.HotPink; 261 } 262 private void AktivoiMaali(PhysicsObject pelaaja) 263 { 264 AddCollisionHandler(maali, pelaaja.Tag, PeliLoppuu); 265 maali.Color = Color.Turquoise; 266 } 267 268 private void PeliLoppuu(PhysicsObject maali, PhysicsObject voittaja) 269 { 270 IsPaused = true; 271 Label voittoTeksti = new Label(voittaja.Tag + " voitti pelin."); 272 voittoTeksti.Color = Color.White; 273 voittoTeksti.Position = new Vector(0.0, 0.0); 274 275 Add(voittoTeksti); 276 } 277 private void AloitaPeli() 278 { 279 ClearAll(); 23 280 LuoPistelaskuri1(); 24 281 LuoPistelaskuri2(); … … 32 289 elamaLaskuri = LuoElamaLaskuri(Screen.Left + 500, Screen.Top - 70, pelaaja1); 33 290 elamaLaskuri2 = LuoElamaLaskuri(Screen.Right - 500, Screen.Top - 70, pelaaja2); 34 35 36 291 Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 37 } 38 private void LuoKentta() 39 { 40 ColorTileMap ruudut = ColorTileMap.FromLevelAsset("SPACERACE"); 41 ruudut.SetTileMethod(Color.Cyan, LuoPelaaja1); 42 ruudut.SetTileMethod(Color.White, LuoPistetynnyri); 43 ruudut.SetTileMethod(Color.Gold, LuoPelaaja2); 44 ruudut.SetTileMethod(Color.Black, LuoAsteroidi); 45 ruudut.SetTileMethod(Color.FromHexCode("0026FF"), LuoMaali); 46 ruudut.SetTileMethod(Color.Red, LuoReuna); 47 //Level.Background.CreateStars(); 48 49 50 ruudut.Execute(20, 20); 51 52 Level.Background.Color = Color.Black; 53 Level.Size = new Vector(3000.0, 1800.0); 54 55 Level.Background.Image = LoadImage("earth"); 56 Level.Background.ScaleToLevel(); 57 58 //GameObject tausta = new GameObject(LoadImage("Earth")); 59 60 //Add(tausta, -3); 61 //Image taustakuva = LoadImage("space"); 62 //GameObject taustaPilvet = new GameObject(Screen.Width * 1.5, Screen.Height * 1.5 ); 63 //taustaPilvet.Image = taustakuva; 64 //Add(taustaPilvet, -3); 65 //Layers[-3].RelativeTransition = new Vector(0.5, 0.5); 66 67 68 69 //Level.Background.Scale = 2.0; 70 //Level.Size = Level.Size * 2; 71 //Level.Background. 72 } 73 74 DoubleMeter LuoElamaLaskuri(Double x, Double y, PhysicsObject pelaaja) 75 { 76 DoubleMeter elamaLaskuri = new DoubleMeter(10); 77 elamaLaskuri.MaxValue = 10; 78 79 if (pelaaja.Tag.Equals("eka")) 80 { 81 elamaLaskuri.LowerLimit += ElamaLoppui1; 82 } 83 84 if (pelaaja.Tag.Equals("toka")) 85 { 86 elamaLaskuri.LowerLimit += ElamaLoppui2; 87 } 88 89 ProgressBar elamaPalkki = new ProgressBar(150, 20); 90 elamaPalkki.X = x; 91 elamaPalkki.Y = y; 92 elamaPalkki.BindTo(elamaLaskuri); 93 elamaPalkki.Color = Color.Transparent; 94 elamaPalkki.BarColor = Color.Red; 95 elamaPalkki.BorderColor = Color.Black; 96 Add(elamaPalkki); 97 return elamaLaskuri; 98 99 } 100 101 102 void LuoPistelaskuri1() 103 { 104 pisteLaskuri1 = new IntMeter(0); 105 106 Label pisteNaytto = new Label(); 107 pisteNaytto.X = Screen.Left + 500; 108 pisteNaytto.Y = Screen.Top - 100; 109 pisteNaytto.TextColor = Color.Black; 110 pisteNaytto.Color = Color.White; 111 pisteNaytto.Title = "Pisteet"; 112 pisteNaytto.BindTo(pisteLaskuri1); 113 IntMeter keratytEsineet = new IntMeter(0); 114 pisteLaskuri1.MaxValue = 10; 115 pisteLaskuri1.UpperLimit += delegate { KaikkiKeratty(pelaaja1); }; 116 Add(pisteNaytto); 117 } 118 119 void LuoPistelaskuri2() 120 { 121 pisteLaskuri2 = new IntMeter(0); 122 123 Label pisteNaytto = new Label(); 124 pisteNaytto.X = Screen.Right - 500; 125 pisteNaytto.Y = Screen.Top - 100; 126 pisteNaytto.TextColor = Color.Black; 127 pisteNaytto.Color = Color.White; 128 pisteNaytto.Title = "Pisteet"; 129 pisteNaytto.BindTo(pisteLaskuri2); 130 IntMeter keratytEsineet = new IntMeter(0); 131 pisteLaskuri2.MaxValue = 10; 132 pisteLaskuri2.UpperLimit += delegate { KaikkiKeratty(pelaaja2); }; 133 Add(pisteNaytto); 134 } 135 136 void KaikkiKeratty(PhysicsObject pelaaja) 137 { 138 // "moi pelaaja " + pelaaja.Tag + "!!!" 139 140 // moi pelaaja eka!!! 141 142 MessageDisplay.Add("Maali auki " + pelaaja.Tag + "lle pelaajalle"); 143 AktivoiMaali(pelaaja); 144 } 145 146 void ElamaLoppui1() 147 { 148 MessageDisplay.Add("Hävisit, paremmin ensikerralla"); 149 pelaaja1.Destroy(); 150 Keyboard.Disable(Key.Up); 151 Keyboard.Disable(Key.Right); 152 Keyboard.Disable(Key.Left); 153 Keyboard.Disable(Key.Down); 154 } 155 156 void ElamaLoppui2() 157 { 158 MessageDisplay.Add("Hävisit, paremmin ensikerralla"); 159 pelaaja2.Destroy(); 160 Keyboard.Disable(Key.W); 161 Keyboard.Disable(Key.A); 162 Keyboard.Disable(Key.S); 163 Keyboard.Disable(Key.D); 164 } 165 private void LuoOhjaimet() 166 { 167 Keyboard.Listen(Key.Up, ButtonState.Down, LiikutaPelaajaa, "Liikutetaan pelaajaa", 1, 1); 168 Keyboard.Listen(Key.Right, ButtonState.Down, LiikutaPelaajaa, "käännä oikealle", 1, 2); 169 Keyboard.Listen(Key.Left, ButtonState.Down, LiikutaPelaajaa, "käännä vasemmalle", 1, 3); 170 Keyboard.Listen(Key.Down, ButtonState.Down, LiikutaPelaajaa, "jarru taaksepäin", 1, 4); 171 172 Keyboard.Listen(Key.W, ButtonState.Down, LiikutaPelaajaa, "Liikutetaan pelaajaa", 2, 1); 173 Keyboard.Listen(Key.D, ButtonState.Down, LiikutaPelaajaa, "käännä oikealle", 2, 2); 174 Keyboard.Listen(Key.A, ButtonState.Down, LiikutaPelaajaa, "käännä vasemmalle", 2, 3); 175 Keyboard.Listen(Key.S, ButtonState.Down, LiikutaPelaajaa, "jarru taaksepäin", 2, 4); 176 } 177 private void LiikutaPelaajaa(int pelaajaNro, int liikkeenTyyppi) 178 { 179 switch (pelaajaNro) 180 { 181 case 1: 182 switch (liikkeenTyyppi) 183 { 184 case 1: 185 pelaaja1.Push(Vector.FromLengthAndAngle(250.0, pelaaja1.Angle));//kaasu eteen 186 break; 187 case 2: 188 pelaaja1.Angle += Angle.FromDegrees(-1.5);//oikealle=myötäpäivään 189 break; 190 case 3: 191 pelaaja1.Angle += Angle.FromDegrees(1.5);//vasemmalle=vastapäivään 192 break; 193 case 4: 194 pelaaja1.Push(-Vector.FromLengthAndAngle(250.0, pelaaja1.Angle)); 195 break; 196 } 197 198 break; 199 case 2: 200 switch (liikkeenTyyppi) 201 { 202 case 1: 203 pelaaja2.Push(Vector.FromLengthAndAngle(250.0, pelaaja2.Angle));//kaasu eteen 204 break; 205 case 2: 206 pelaaja2.Angle += Angle.FromDegrees(-2.0);//oikealle=myötäpäivään 207 break; 208 case 3: 209 pelaaja2.Angle += Angle.FromDegrees(2.0);//vasemmalle=vastapäivään 210 break; 211 case 4: 212 pelaaja2.Push(-Vector.FromLengthAndAngle(250.0, pelaaja2.Angle)); 213 break; 214 } 215 break; 216 } 217 } 218 219 private void LuoAsteroidi(Vector paikka, double leveys, double korkeus) 220 { 221 asteroidi = new PhysicsObject(30, 30); 222 Image c = LoadImage("asteroid"); 223 asteroidi.Image = c; 224 asteroidi.Position = paikka; 225 asteroidi.Tag = "asteroid"; 226 Add(asteroidi); 227 } 228 private void LuoPelaaja1(Vector paikka, double leveys, double korkeus) 229 { 230 pelaaja1 = new PhysicsObject(30, 30); 231 Image c = LoadImage("ship"); 232 pelaaja1.Image = c; 233 pelaaja1.Position = paikka; 234 pelaaja1.Tag = "eka"; 235 pelaaja1.AngularDamping = 0.9; 236 Add(pelaaja1); 237 pelaaja1.LinearDamping = 0.98; 238 AddCollisionHandler(pelaaja1, "asteroid", PelaajaOsuu); 239 AddCollisionHandler(pelaaja1, "piste", PelaajaOsuuPisteeseen); 240 } 241 private void LuoPelaaja2(Vector paikka, double leveys, double korkeus) 242 { 243 pelaaja2 = new PhysicsObject(30, 30); 244 Image c = LoadImage("ship"); 245 pelaaja2.Image = c; 246 247 pelaaja2.Position = paikka; 248 pelaaja2.Tag = "toka"; 249 pelaaja2.AngularDamping = 0.9; 250 Add(pelaaja2); 251 pelaaja2.LinearDamping = 0.98; 252 AddCollisionHandler(pelaaja2, "asteroid", PelaajaOsuu); 253 AddCollisionHandler(pelaaja2, "piste", PelaajaOsuuPisteeseen); 254 } 255 private void LuoReuna(Vector paikka, double leveys, double korkeus) 256 { 257 PhysicsObject reuna = PhysicsObject.CreateStaticObject(20, 20); 258 reuna.Position = paikka; 259 Add(reuna); 260 reuna.Color = Color.Transparent; 261 } 262 private void LuoMaali(Vector paikka, double leveys, double korkeus) 263 { 264 maali = PhysicsObject.CreateStaticObject(20, 20); 265 maali.Position = paikka; 266 267 Add(maali); 268 maali.Color = Color.HotPink; 269 } 270 private void AktivoiMaali(PhysicsObject pelaaja) 271 { 272 AddCollisionHandler(maali, pelaaja.Tag, PeliLoppuu); 273 maali.Color = Color.Turquoise; 274 } 275 276 private void PeliLoppuu(PhysicsObject maali, PhysicsObject voittaja) 277 { 278 IsPaused = true; 279 Label voittoTeksti = new Label(voittaja.Tag + " voitti pelin."); 280 voittoTeksti.Color = Color.White; 281 voittoTeksti.Position = new Vector(0.0, 0.0); 282 283 Add(voittoTeksti); 284 } 285 private void AloitaPeli() 286 { 287 292 Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet"); 288 293 } 289 294
Note: See TracChangeset
for help on using the changeset viewer.