?? fangkuai.lst
字號:
198 2
199 2 y1+=4;
200 2 for(i=0;i<5;i++)
201 2 {
202 3 Point(x1+i,y1,0); //畫第二條橫線
203 3 }
204 2
205 2 for(i=0;i<5;i++)
206 2 {
207 3 Point(x1,y1-i,0); //畫第1條堅線
208 3 }
209 2
210 2 x1+=4;
211 2 for(i=0;i<5;i++)
212 2 {
213 3 Point(x1,y1-i,0); //畫第2條堅線
214 3 }
215 2
216 2 y1-=4;
217 2 for(i=0;i<5;i++)
218 2 {
219 3 Point(x1-i,y1+i,0); //畫斜線
220 3 }
221 2 }
222 1 }
223 //////////////////////////////////////////////////////////////////////////
224 ////////////////左沖突檢測//////////////////////////////////////////////
225 bit Left_Anti()
226 {
227 1 uchar i;
228 1 for(i=0;i<4;i++)
229 1 {
230 2 if(Platform[xx+shape[This_shape].point[i].x-1][yy+shape[This_shape].point[i].y]==1)
231 2 return 1;
232 2 }
233 1 return 0;
234 1 }
235
236 ////////////////右沖突檢測///////////////////////////////////////////
237 bit Right_Anti()
238 {
239 1 uchar i;
240 1 for(i=0;i<4;i++)
241 1 {
C51 COMPILER V8.02 FANGKUAI 11/26/2006 21:57:40 PAGE 5
242 2 if(Platform[xx+shape[This_shape].point[i].x+1][yy+shape[This_shape].point[i].y]==1)
243 2 return 1;
244 2 }
245 1 return 0;
246 1
247 1 }
248
249 ////////////////////////////////////////下沖突檢測//////////////////////////
250 bit Bottom_Anti()
251 {
252 1 uchar i;
253 1 for(i=0;i<4;i++)
254 1 {
255 2 if(Platform[xx+shape[This_shape].point[i].x][yy+shape[This_shape].point[i].y+1]==1)
256 2 return 1;
257 2 }
258 1 return 0;
259 1 }
260 //////////////////////////////////改變形狀時產生的沖突檢測////////////////////
261 bit Change_Shape_Anti()
262 {
263 1 uchar i;
264 1 for(i=0;i<4;i++)
265 1 {
266 2 if(Platform[xx+shape[shape[This_shape].next].point[i].x][yy+shape[shape[This_shape].next].point[i].y]==
-1)
267 2 return 1; //檢測一個形狀的沖突情況
268 2 }
269 1 return 0;
270 1 }
271 //////////////////////////////////產生一個隨機數,返回一個隨機數///////////////
272 uchar Random()
273 {
274 1 static uchar m;
275 1 m+=49;
276 1 return (m%19);
277 1 }
278
279 //////////////計分函數,參數為 消行行數n///////////////////////////////////////
280
281 void Show_score(uchar n)
282 {
283 1 Game_Score=Game_Score+10*n;
284 1
285 1 if(Game_Score<10)
286 1 {
287 2 Show_num(13,6,Game_Score%10); //顯示個位
288 2 }
289 1 else if(Game_Score<100)
290 1 {
291 2 Show_num(14,6,Game_Score%10);
292 2 Show_num(13,6,Game_Score/10%100); //顯示個位,十位
293 2 }
294 1 else if(Game_Score<1000)
295 1 {
296 2 Show_num(14,6,Game_Score%10);
297 2 Show_num(13,6,Game_Score/10%10);
298 2 Show_num(12,6,Game_Score/100%10); //顯示個位 ,十位,百位
299 2 }
300 1 else
301 1 {
302 2 Show_num(15,6,Game_Score%10);
C51 COMPILER V8.02 FANGKUAI 11/26/2006 21:57:40 PAGE 6
303 2 Show_num(14,6,Game_Score/10%10);
304 2 Show_num(13,6,Game_Score/100%10); //顯示個位 ,十位,百位,千位
305 2 Show_num(12,6,Game_Score/1000);
306 2 }
307 1
308 1 if(Game_Score%1000==0)
309 1 {
310 2 if(Game_Score>0)
311 2 {
312 3 Game_Level++;
313 3 if(Game_Level==10)
314 3 {
315 4 Game_Stop=1;
316 4 hanzhi(7,5,12,1); // 輸出“太棒了"
317 4 hanzhi(7,7,13,1);
318 4 hanzhi(7,9,14,1);
319 4
320 4 }
321 3 Show_num(13,11,Game_Level); //顯示水平
322 3
323 3 }
324 2 }
325 1 }
326
327 //**************************************************************************
328 //= 函數原型:void Undisplay_line()
329 //= 功 能: 消除行
330 //= 參 數: 無
331 //= 返 回 值: 無
332 //= 函數性質:私有函數
333 //= 注 意:
334 //***************************************************************************
335 void UnDisplay_line()
336 {
337 1 uchar Del_Line; //標識要刪除的行
338 1 uchar Del_Line_Num=0; //標識刪除的行數
339 1 uchar i,j,k;
340 1 bit HavePoint; //標識一行中是否有空白點
341 1
342 1 for(i=0;i<4;i++)
343 1 {
344 2 for(j=1;j<13;j++)
345 2 {
346 3 if(Platform[j][yy+i]==0)
347 3 break; //如果這一行中有一個為空,則退出這一行的循環
348 3 else if(j==12)
349 3 {
350 4 Del_Line=yy+i; //確定要刪除的行
351 4 if(Del_Line<20)
352 4 {
353 5 Del_Line_Num++; //計算共刪除的行數
354 5 for(k=1;k<13;k++)
355 5 {
356 6 XiaoFengKuai(k,Del_Line,0); //刪除行
357 6 Platform[k][Del_Line]=0; //平臺數據清零
358 6 }
359 5 while(1) //下移
360 5 {
361 6 HavePoint=0;
362 6 for(k=1;k<13;k++)
363 6 {
364 7 if(Platform[k][Del_Line-1]==1)
C51 COMPILER V8.02 FANGKUAI 11/26/2006 21:57:40 PAGE 7
365 7 {
366 8 HavePoint=1; //標識這一行有要下移的點
367 8 XiaoFengKuai(k,Del_Line-1,0); //刪除小方塊
368 8 Platform[k][Del_Line-1]=0; //平臺數據清零
369 8 XiaoFengKuai(k,Del_Line,1) ; //將小方塊下移
370 8 Platform[k][Del_Line]=1; //平臺數據置1,表明此位置已被占用
371 8 }
372 7 }
373 6 if(HavePoint==0) break; //沒有要下移的行,退出本循環
374 6 Del_Line--; //下移上一行
375 6 }
376 5 }
377 4 }
378 3 }
379 2 }
380 1 if(Del_Line_Num)
381 1 {
382 2 Show_score(Del_Line_Num); //刷新分數顯示
383 2 }
384 1 }
385
386 //**************************************************************************
387 //= 函數原型:void Show_shape(uchar x1,uchar y1,uchar Tshape,bit mode)
388 //= 功 能: 顯示一個方塊形狀或刪除一個方塊形狀
389 //= 參 數: (x1,y1)為顯示位置,Tshape為顯示的形狀,mode=1為顯示,mode=0不顯示
390 //= 返 回 值:
391 //= 函數性質:私有函數
392 //= 注 意:
393 //***************************************************************************
394 void Show_shape(uchar x1,uchar y1,uchar Tshape,bit mode)
395 {
396 1 if(mode==1)
397 1 {
398 2
399 2 XiaoFengKuai(x1+shape[Tshape].point[0].x,y1+shape[Tshape].point[0].y,1); //顯示形狀
400 2 XiaoFengKuai(x1+shape[Tshape].point[1].x,y1+shape[Tshape].point[1].y,1);
401 2 XiaoFengKuai(x1+shape[Tshape].point[2].x,y1+shape[Tshape].point[2].y,1);
402 2 XiaoFengKuai(x1+shape[Tshape].point[3].x,y1+shape[Tshape].point[3].y,1);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -