📄 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 V7.01 FANGKUAI 04/27/2007 22:08:22 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 V7.01 FANGKUAI 04/27/2007 22:08:22 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 V7.01 FANGKUAI 04/27/2007 22:08:22 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 + -