vanilla-wow-addons – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | function Tetris_stone_outside_test () |
2 | --variablen holen und setzen |
||
3 | local spalten = Tetris["game"]["x"]; |
||
4 | local zeilen = Tetris["game"]["y"]; |
||
5 | local anz_s = Tetris["game"]["s_anz_s"]; |
||
6 | --liste erstellen |
||
7 | for s = 1, anz_s do |
||
8 | --pos des berechneten steins auslesen |
||
9 | local pos_string = Tetris["game"]["s_temp"]["temp"][s]; |
||
10 | --pos x y als zahlen holen |
||
11 | local pos_xy = Tetris_return_xy(pos_string); |
||
12 | local pos_x = pos_xy["x"]; |
||
13 | local pos_y = pos_xy["y"]; |
||
14 | --überprüfen ob stein auserhalb spielfeld |
||
15 | if ((pos_x > spalten) or (pos_x < 1) or (pos_y > zeilen) or (pos_y < 1)) then |
||
16 | --stein ist nicht im spielfeld |
||
17 | return true; |
||
18 | else |
||
19 | --überprüfen ob stein schon besetzt ist |
||
20 | if not (Tetris["game"]["feld"][pos_string] == 0) then |
||
21 | return true; |
||
22 | end |
||
23 | end |
||
24 | end |
||
25 | --keine ungültige oder besetzte steine gefunden |
||
26 | return false; |
||
27 | end |
||
28 | |||
29 | --position des zukünftigen bausteins berechnen |
||
30 | function Tetris_falling_stone_coming_soon () |
||
31 | --variablen holen und setzen |
||
32 | local stone = Tetris["game"]["s"]; |
||
33 | local s_lage = Tetris["game"]["s_lage"]; |
||
34 | local x_pos = Tetris["game"]["s_pos_x"]; |
||
35 | local y_pos = Tetris["game"]["s_pos_y"]; |
||
36 | local anz_s = Tetris["game"]["s_anz_s"]; |
||
37 | --pos der steine über diesen baustein in dieser lage holen |
||
38 | local infos = Tetris_baustein (stone, 2, s_lage); |
||
39 | --liste erstellen |
||
40 | for s = 1, anz_s do |
||
41 | --relative pos des steins zum nullpunkt des bausteins als string |
||
42 | local r_string_s_pos = infos[s]; |
||
43 | --zahlen auslesen |
||
44 | local r_s_pos = Tetris_return_xy(r_string_s_pos); |
||
45 | local r_s_x = r_s_pos["x"]; |
||
46 | local r_s_y = r_s_pos["y"]; |
||
47 | --absolute pos des steins im gamewindow |
||
48 | local s_x = x_pos+r_s_x; |
||
49 | local s_y = y_pos+r_s_y; |
||
50 | --pos des steines als string im temp speichern |
||
51 | Tetris["game"]["s_temp"]["temp"][s]="x"..s_x.."y"..s_y; |
||
52 | end |
||
53 | end |
||
54 | |||
55 | --aktuelle neue position des bausteins speichern |
||
56 | function Tetris_falling_stone () |
||
57 | --variablen holen und setzen |
||
58 | local anz_s = Tetris["game"]["s_anz_s"]; |
||
59 | --liste erstellen |
||
60 | for s = 1, anz_s do |
||
61 | --pos des berechneten steins auslesen |
||
62 | local pos = Tetris["game"]["s_temp"]["temp"][s]; |
||
63 | --pos des steines als string im temp speichern |
||
64 | Tetris["game"]["s_temp"][s]=pos; |
||
65 | end |
||
66 | end |
||
67 | |||
68 | --aktueller baustein in feldliste speichern |
||
69 | function Tetris_save_stone () |
||
70 | --variablen holen und setzen |
||
71 | local anz_s = Tetris["game"]["s_anz_s"]; |
||
72 | local stone = Tetris["game"]["s"]; |
||
73 | --in liste speichern |
||
74 | for s = 1, anz_s do |
||
75 | --pos des aktuellen steins auslesen |
||
76 | local pos = Tetris["game"]["s_temp"][s]; |
||
77 | --pos des steines im feld speichern |
||
78 | Tetris["game"]["feld"][pos]=stone; |
||
79 | end |
||
80 | end |
||
81 | |||
82 | --return pos x_y als zahlen im table zurück |
||
83 | function Tetris_return_xy(string_xy) |
||
84 | local suchx = string.find(string_xy, "x", 1); |
||
85 | local suchy = string.find(string_xy, "y", 1); |
||
86 | local stringleng = string.len(string_xy); |
||
87 | local x_pos = tonumber(string.sub(string_xy,suchx+1,suchy-1)); |
||
88 | local y_pos = tonumber(string.sub(string_xy,suchy+1,stringleng)); |
||
89 | local pos = {["x"]=x_pos, ["y"]=y_pos}; |
||
90 | return pos; |
||
91 | end |
||
92 | |||
93 | --feldliste erstellen |
||
94 | function Tetris_fieldlist_create () |
||
95 | --variablen holen und setzen |
||
96 | local spalten = Tetris["game"]["x"]; |
||
97 | local zeilen = Tetris["game"]["y"]; |
||
98 | --vorherige gespeicherte angaben löschen |
||
99 | Tetris["game"]["feld"]= { }; |
||
100 | --liste erstellen |
||
101 | for spalte = 1, spalten do |
||
102 | for zeile = 1, zeilen do |
||
103 | Tetris["game"]["feld"]["x"..spalte.."y"..zeile]=0; |
||
104 | end |
||
105 | end |
||
106 | end |
||
107 | |||
108 | --überprüfen ob eine linie fertig ist |
||
109 | --wenn ja, nummer der linie durchgeben |
||
110 | --wenn nein, 0 durchgeben |
||
111 | function Tetris_complet_zeile_test () |
||
112 | --variablen holen und setzen |
||
113 | local spalten = Tetris["game"]["x"]; |
||
114 | local zeilen = Tetris["game"]["y"]; |
||
115 | local zahler = 0 |
||
116 | for zeile = 1, zeilen do |
||
117 | local zahler = 0 |
||
118 | for spalte = 1, spalten do |
||
119 | --überprüfen ob dieses feld 0 ist |
||
120 | if (Tetris["game"]["feld"]["x"..spalte.."y"..zeile]==0) then |
||
121 | --weiter zur nächsten zeile |
||
122 | spalte = spalten+1; |
||
123 | else |
||
124 | --volles feld gefunden |
||
125 | zahler = zahler+1; |
||
126 | end |
||
127 | |||
128 | end |
||
129 | --überprüfen ob die gerade überprüfte zeile voll ist |
||
130 | if (zahler == spalten) then |
||
131 | return zeile; |
||
132 | end |
||
133 | end |
||
134 | return 0; |
||
135 | end |
||
136 | |||
137 | function Tetris_delet_line (linie) |
||
138 | --linie = zeile die gelöscht werden muss |
||
139 | if (Tetris["debug"]==1) then |
||
140 | DEFAULT_CHAT_FRAME:AddMessage("Delet Linie "..linie); |
||
141 | end |
||
142 | --variablen holen und setzen |
||
143 | local spalten = Tetris["game"]["x"]; |
||
144 | local zeilen = Tetris["game"]["y"]; |
||
145 | for zeile=1 , zeilen-linie do |
||
146 | for spalte = 1, spalten do |
||
147 | --nummer des oberen feldes auslesen |
||
148 | local field_nr = Tetris["game"]["feld"]["x"..spalte.."y"..zeile+linie]; |
||
149 | --nummer ins untere feld schreiben |
||
150 | Tetris["game"]["feld"]["x"..spalte.."y"..zeile+linie-1] = field_nr; |
||
151 | end |
||
152 | end |
||
153 | end |
||
154 | |||
155 | function Tetris_random_stone (anz_s) |
||
156 | --variablen holen und setzen |
||
157 | local zufall = math.random(anz_s); |
||
158 | return zufall; |
||
159 | end |
||
160 | |||
161 | function Tetris_release_stone () |
||
162 | --variablen holen und setzen |
||
163 | local s_next = Tetris["game"]["s_next"]; |
||
164 | local spalten = Tetris["game"]["x"]; |
||
165 | local anz_s = Tetris["game"]["stones"]["anz_stones"]; |
||
166 | local s = ""; |
||
167 | --überprüfen ob der nächste stein bekannt ist |
||
168 | if (s_next == 0) then |
||
169 | --zufalls-stein generieren |
||
170 | local zufall = Tetris_random_stone (anz_s) |
||
171 | --stein holen dem diese zufallszahl zugeordnet ist |
||
172 | s = Tetris["game"]["stones"][zufall]; |
||
173 | --nächster stein bekannt |
||
174 | else |
||
175 | s = s_next; |
||
176 | end |
||
177 | --infos über diesen stein holen |
||
178 | local infos = Tetris_baustein (s, 1) |
||
179 | local anz_lagen = infos[1]; |
||
180 | local anz_steine = infos[2]; |
||
181 | --baustein-nullpunkt setzen |
||
182 | local x = spalten/2; |
||
183 | local x = math.ceil(x)+1; |
||
184 | local y = Tetris["game"]["y"]; |
||
185 | --nächster zufallstein generieren |
||
186 | local zufall = Tetris_random_stone (anz_s); |
||
187 | local s_next = Tetris["game"]["stones"][zufall]; |
||
188 | Tetris["game"]["s_next"] = s_next; |
||
189 | --alle angaben speichern |
||
190 | Tetris["game"]["s"]=s; |
||
191 | Tetris["game"]["s_anz_s"]=anz_steine; |
||
192 | Tetris["game"]["s_anz_l"]=anz_lagen; |
||
193 | Tetris["game"]["s_lage"]=1; |
||
194 | Tetris["game"]["s_pos_x"]=x; |
||
195 | Tetris["game"]["s_pos_y"]=y; |
||
196 | if (Tetris["debug"]==1) then |
||
197 | DEFAULT_CHAT_FRAME:AddMessage("This Stone="..s.." Next Stone="..s_next); |
||
198 | end |
||
199 | end |
||
200 | |||
201 | --position des zukünftigen bausteins berechnen, für NS |
||
202 | function Tetris_falling_stone_coming_soon_NS () |
||
203 | --variablen holen und setzen |
||
204 | local stone = Tetris["game"]["s_next"]; |
||
205 | local s_lage = 1; |
||
206 | local x_pos = math.ceil(Tetris["game"]["NS_x"]/2+1); |
||
207 | local y_pos = Tetris["game"]["NS_y"]; |
||
208 | --anz. steine die dieser baustein hat holen |
||
209 | local info_anz_s = Tetris_baustein (stone, 1); |
||
210 | local anz_s = info_anz_s[2]; |
||
211 | --pos der steine über diesen baustein in dieser lage holen |
||
212 | local infos = Tetris_baustein (stone, 2, s_lage); |
||
213 | --liste erstellen |
||
214 | for s = 1, anz_s do |
||
215 | --relative pos des steins zum nullpunkt des bausteins als string |
||
216 | local r_string_s_pos = infos[s]; |
||
217 | --zahlen auslesen |
||
218 | local r_s_pos = Tetris_return_xy(r_string_s_pos); |
||
219 | local r_s_x = r_s_pos["x"]; |
||
220 | local r_s_y = r_s_pos["y"]; |
||
221 | --absolute pos des steins im gamewindow |
||
222 | local s_x = x_pos+r_s_x; |
||
223 | local s_y = y_pos+r_s_y; |
||
224 | --pos des steines als string im temp speichern |
||
225 | Tetris["game"]["s_NS_temp"][s]="x"..s_x.."y"..s_y; |
||
226 | end |
||
227 | end |
||
228 | |||
229 | function Tetris_ingame(nr) |
||
230 | --nr = neuer ingamestatus |
||
231 | if (nr == 0) then |
||
232 | Tetris["ingame"]=0; |
||
233 | Tetris_GF_b_pause:Disable(); |
||
234 | Tetris_GF_BF_l:Disable(); |
||
235 | Tetris_GF_BF_u:Disable(); |
||
236 | Tetris_GF_BF_r:Disable(); |
||
237 | Tetris_GF_BF_d:Disable(); |
||
238 | end |
||
239 | if (nr == 1) then |
||
240 | Tetris["ingame"]=1; |
||
241 | Tetris_GF_b_pause:Enable(); |
||
242 | Tetris_GF_BF_l:Enable(); |
||
243 | Tetris_GF_BF_u:Enable(); |
||
244 | Tetris_GF_BF_r:Enable(); |
||
245 | Tetris_GF_BF_d:Enable(); |
||
246 | end |
||
247 | end |
||
248 | |||
249 | function Tetris_stonelist_create () |
||
250 | local max_s = Tetris["options"]["max_s"]; |
||
251 | Tetris["game"]["stones"] = { }; |
||
252 | for s = 1, max_s do |
||
253 | local status = Tetris["options"]["stones"][s]; |
||
254 | if status == 1 then |
||
255 | table.insert(Tetris["game"]["stones"],s) |
||
256 | end |
||
257 | end |
||
258 | --falls kein stein gewählt ist |
||
259 | local anz_s = table.getn(Tetris["game"]["stones"]); |
||
260 | if (anz_s < 1) then |
||
261 | Tetris["game"]["stones"]["anz_stones"]=1; |
||
262 | table.insert(Tetris["options"]["stones"],1) |
||
263 | else |
||
264 | Tetris["game"]["stones"]["anz_stones"]=anz_s; |
||
265 | end |
||
266 | end |
||
267 | |||
268 | function Tetris_creat_custom_lines (lines) |
||
269 | --lines = anzahl linien |
||
270 | --variablen holen und setzen |
||
271 | local spalten = Tetris["game"]["x"]; |
||
272 | local zeilen = Tetris["game"]["y"]; |
||
273 | local max_s = Tetris["options"]["max_s"]; |
||
274 | |||
275 | for zeile = 1, lines do |
||
276 | for spalte = 1, spalten do |
||
277 | local zufall = Tetris_random_stone(2); |
||
278 | if (zufall == 1) then |
||
279 | local zufall = Tetris_random_stone(max_s); |
||
280 | Tetris["game"]["feld"]["x"..spalte.."y"..zeile] = zufall; |
||
281 | end |
||
282 | end |
||
283 | end |
||
284 | end |