Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
using Jypeli;
namespace AngryLego;
/// @author vesal
/// @version 16.10.2023
/// <summary>
///
/// </summary>
public class AngryLego : PhysicsGame
{
private static readonly string[] lines = {
" ",
" ",
" ",
" ",
"/ ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ",
" ======= ",
" Y Y Y ",
" X* X X ",
" * X X X * ",
" X X X ",
" X *X *X ",
};
private static readonly int tileWidth = 800 / lines[0].Length;
private static readonly int tileHeight = 480 / lines.Length;
public override void Begin()
{
ClearGameObjects();
ClearControls();
Gravity = new Vector(0, -500);
Level.Background.CreateGradient(Color.Blue, Color.White);
TileMap tiles = TileMap.FromStringArray(lines);
tiles.SetTileMethod('Y', LuoYlaSeina, Color.Wheat); // Aliohjelmien pitää itse lisätä, enemmän param
tiles.SetTileMethod('X', LuoSeina, Color.Wheat); // Aliohjelmien pitää itse lisätä, enemmän param
tiles.SetTileMethod('=', LuoKatto, Color.Red);
tiles.SetTileMethod('/', LuoMaila, Color.Black);
tiles.SetTileMethod('*', LuoVihollinen, Color.Pink);
tiles.Execute(tileWidth, tileHeight);
Level.CreateBorders();
Camera.ZoomToLevel();
PhoneBackButton.Listen(ConfirmExit, "Lopeta peli");
Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli");
}
/// <summary>
/// Luodaan seinäelementti
/// </summary>
private void LuoSeina(Vector paikka, double leveys, double korkeus, Color vari)
{
PhysicsObject seina = new PhysicsObject(leveys-1, korkeus-1);
seina.Position = paikka;
seina.Color = Color.Wheat;
seina.Tag = "rakenne";
// seina.Image = LoadImage("tiili");
Add(seina);
}
/// <summary>
/// Luodaan isompi yläseinäelementti
/// </summary>
private void LuoYlaSeina(Vector paikka, double leveys, double korkeus, Color vari)
{
PhysicsObject seina = new PhysicsObject(leveys*1.8, korkeus-1);
seina.Position = paikka;
seina.Color = Color.Wheat;
seina.Tag = "rakenne";
// seina.Image = LoadImage("tiili");
Add(seina);
}
/// <summary>
/// Luodaan kattoelementti. Luodaan hieman ylisuureksi, jolloin liimautuu
/// naapuriin kiinni.
/// </summary>
private void LuoKatto(Vector paikka, double leveys, double korkeus, Color vari)
{
PhysicsObject katto = new PhysicsObject(leveys-1, korkeus-1);
katto.Position = paikka;
katto.Color = vari;
katto.Tag = "rakenne";
Add(katto);
}
/// <summary>
/// Luodaan maila, jolla palloja lyödään
/// </summary>
private void LuoMaila(Vector paikka, double leveys, double korkeus, Color vari)
{
PhysicsObject maila = PhysicsObject.CreateStaticObject(leveys * 6, korkeus);
maila.Position = paikka;
maila.Color = vari;
// maila.Image = LoadImage("maila3");
Add(maila);
}
/// <summary>
/// Luodaan vihollinen, joka hajoaa osuessaan rekenteeseen
/// </summary>
private void LuoVihollinen(Vector paikka, double leveys, double korkeus, Color vari)
{
PhysicsObject vihu = new PhysicsObject(leveys / 2, leveys / 2, Shape.Circle);
vihu.Position = paikka;
vihu.Color = vari;
// vihu.Collided += new NewCollisionHandler(VihuunOsui);
vihu.Tag = "vihu";
// vihu.Image = LoadImage("Baby");
Add(vihu);
}
}