source: 2016/koodauskerho/OttoK/Wizard/Wizard/Wizard/Wizard.cs @ 8414

Revision 8414, 4.9 KB checked in by tesatapa, 2 years ago (diff)
Line 
1using System;
2using System.Collections.Generic;
3using Jypeli;
4using Jypeli.Assets;
5using Jypeli.Controls;
6using Jypeli.Effects;
7using Jypeli.Widgets;
8
9public class Wizard : PhysicsGame
10{
11    const double nopeus = 125;
12    const double hyppyNopeus = 600;
13    const double lyontiNopeus = 600;
14    const int RUUDUN_KOKO = 40;
15
16    PlatformCharacter pelaaja1;
17
18    Image pelaajanKuva = LoadImage("Wizard");
19    Image ground = LoadImage("ground");
20    Image[] pelaajanKuvat = LoadImages("Wizard", "WizardWalking1", "WizardWalking2", "WizardWalking3", "WizardWalking4");
21    Image[] lyontiKuvat = LoadImages("Wizard", "WizardAttack1", "WizardAttack2", "WizardAttack3");
22
23
24    SoundEffect maaliAani = LoadSoundEffect("maali");
25
26    SoundEffect hyppyAani = LoadSoundEffect("Jump");
27
28    public override void Begin()
29    {
30
31        //Level.Background.Color = new Color(0, 0, 96);
32       
33        //for (int i = 0; i < 1000; i++)
34        //{
35       
36        //    GameObject tahti = new GameObject(2, 2);
37        //    tahti.Position = RandomGen.NextVector(Level.BoundingRect);
38        //    Add(tahti);
39        //}
40        //Camera.ZoomToLevel();
41
42        Gravity = new Vector(0, -1000);
43        SmoothTextures = false;
44
45        LuoKentta();
46        LisaaNappaimet();
47
48        Camera.Follow(pelaaja1);
49        Camera.ZoomFactor = 4.5;
50        Camera.StayInLevel = true;
51
52        MediaPlayer.Play("01 A Night Of Dizzy Spells");
53    }
54
55    void LuoKentta()
56    {
57        TileMap kentta = TileMap.FromLevelAsset("kentta1");
58        kentta.SetTileMethod('#', LisaaTaso);
59        kentta.SetTileMethod('N', LisaaPelaaja);
60        kentta.Execute(RUUDUN_KOKO, RUUDUN_KOKO);
61        Level.CreateBorders();
62        //Level.Background.CreateGradient(Color.White, Color.SkyBlue);
63    }
64
65    void LisaaTaso(Vector paikka, double leveys, double korkeus)
66    {
67        PhysicsObject taso = PhysicsObject.CreateStaticObject(leveys, korkeus);
68        taso.Position = paikka;
69        taso.Image = ground;
70        Add(taso);
71    }
72
73    void LisaaPelaaja(Vector paikka, double leveys, double korkeus)
74    {
75        pelaaja1 = new PlatformCharacter(leveys, korkeus);
76        pelaaja1.Position = paikka;
77        pelaaja1.Mass = 4.0;
78        pelaaja1.Image = pelaajanKuva;
79        pelaaja1.AnimWalk = new Animation(pelaajanKuvat);
80        pelaaja1.AnimIdle = new Animation(pelaajanKuva);
81        pelaaja1.AnimWalk.FPS = 10;
82        Add(pelaaja1);
83        GameObject tausta = new GameObject(Screen.Width, Screen.Height);
84        tausta.Image = LoadImage("Tausta1");
85        Add(tausta, -3);
86        Layers[-3].RelativeTransition = new Vector(0.5, 0.5);
87        //Timer ajastin = new Timer();
88        //ajastin.Interval = 0.05;
89        //ajastin.Timeout += delegate
90        //{
91        //    tausta.Position = pelaaja1.Position;
92        //};
93        //ajastin.Start();
94    }
95
96
97    void LisaaNappaimet()
98    {
99        Keyboard.Listen(Key.F1, ButtonState.Pressed, ShowControlHelp, "Näytä ohjeet");
100        Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
101
102        Keyboard.Listen(Key.Left, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, -nopeus);
103        Keyboard.Listen(Key.Right, ButtonState.Down, Liikuta, "Liikkuu vasemmalle", pelaaja1, nopeus);
104        Keyboard.Listen(Key.Up, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
105        Keyboard.Listen(Key.X, ButtonState.Pressed, Isku, "Pelaaja Iskee", pelaaja1, lyontiNopeus);
106
107        ControllerOne.Listen(Button.Back, ButtonState.Pressed, Exit, "Poistu pelistä");
108
109        ControllerOne.Listen(Button.DPadLeft, ButtonState.Down, Liikuta, "Pelaaja liikkuu vasemmalle", pelaaja1, -nopeus);
110        ControllerOne.Listen(Button.DPadRight, ButtonState.Down, Liikuta, "Pelaaja liikkuu oikealle", pelaaja1, nopeus);
111        ControllerOne.Listen(Button.A, ButtonState.Pressed, Hyppaa, "Pelaaja hyppää", pelaaja1, hyppyNopeus);
112
113        PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
114    }
115
116    void Liikuta(PlatformCharacter hahmo, double nopeus)
117    {
118        hahmo.Walk(nopeus);
119    }
120
121    void Hyppaa(PlatformCharacter hahmo, double nopeus)
122    {
123        if (hahmo.Jump(nopeus))
124        hyppyAani.Play();
125    }
126    void Isku(PlatformCharacter hahmo, double nopeus)
127    {
128        hahmo.AnimIdle = null;
129        Animation lyonti = new Animation(lyontiKuvat);
130        hahmo.Animation = lyonti;
131        lyonti.Start();
132        lyonti.FPS = 10;
133        lyonti.Played += delegate
134        {
135            hahmo.AnimIdle = new Animation(pelaajanKuva);
136        };
137        double matka = 30;
138        Vector suunta = hahmo.FacingDirection == Direction.Right ? new Vector(matka, 0) : new Vector(-matka, 0);
139        List<GameObject> vihut = GetObjectsAt(hahmo.Position + suunta, "vihollinen", 1);
140        foreach (GameObject item in vihut)
141        {
142            item.Destroy();
143        }
144    }
145
146}
Note: See TracBrowser for help on using the repository browser.