在linux系统下基于arm嵌入式的俄罗斯方块内容摘要:

} int isbottom()//判断是否到底及模型下是否有其他方块 { int m = blow。 int n = N/21+leftright。 int i,j,k。 int l[4][2]= {1,1,1,1,1,1,1,1}。 for(i = 0,k = 0。 i 4。 i++,k++){ for(j = 0。 j 4。 j++) if(aa[j][i]){ l[k][0]=j+m。 //每列最后一个元素的横坐标 l[k][1]=i+n。 //每列最后一个元素的纵坐标 } } for(i=0。 ik。 i++ ) { if(l[i][0] == 1) continue。 if(l[i][0]+1=M||a[l[i][0]+1][l[i][1]]) //最后一行是否到底,下一行是否有其他元 素 return 1。 } return 0。 } int isleft()//判断是否到左边界 9 { int m = blow。 int n = N/21+leftright。 int i,j,k = 0。 int l[4][2]= {1,1,1,1,1,1,1,1}。 for(i = 0,k = 0。 i 4。 i++,k++){ for(j = 3。 j =0。 j) if(aa[i][j]){ l[k][0]=i+m。 //每行最左边元素的横坐标 l[k][1]=j+n。 //每行最左边元素的纵坐标 } } for(i=0。 ik。 i++ ) { if(l[i][0] == 1) continue。 if(l[i][1]1 0||a[l[i][0]][l[i][1]1]) return 1。 } return 0。 } int isright()//判断是否到右边界 { int m = blow。 int n = N/21+leftright。 int i,j,k = 0。 int l[4][2]= {1,1,1,1,1,1,1,1}。 for(i = 0,k = 0。 i 4。 i++,k++){ for(j = 0。 j 4。 j++) if(aa[i][j]){ l[k][0]=i+m。 //每行最右边元素的横坐标 l[k][1]=j+n。 //每行最右边元素的纵坐标 } } for(i=0。 ik。 i++ ) { if(l[i][0] == 1) continue。 if(l[i][1]+1 = N||a[l[i][0]][l[i][1]+1]) return 1。 } return 0。 } 10 void move(int z)//大数组里的元素下移一行 { int k,j。 for(k=z。 k0。 k){ for(j=0。 jN。 j++){ a[k][j]=a[k1][j]。 } } for(j=0。 jN。 j++) a[0][j]=0。 } int erase()//一行满了消行 { int i,j,k。 int flag,count=0。 for(i=0。 iM。 i++){ flag=1。 for(j=0。 jN。 j++){ if(!a[i][j]){ flag=0。 break。 } } if(flag){ move(i)。 count++。 } } return count。 } void cheaterase()//作弊消去最后一行 { int i,j。 move(M1)。 blow++。 } void copyof(int (*aa)[4],int n) { switch (n){ case 0:copy(aa,a1)。 break。 case 1:copy(aa,a2)。 break。 case 2:copy(aa,a3)。 break。 case 3:copy(aa,a4)。 break。 case 4:copy(aa,a5)。 break。 11 case 5:copy(aa,a6)。 break。 case 6:copy(aa,a7)。 break。 } } int islose() { if(isbottom(a,aa)){ show(a)。 printf(\t\t\33[31m\33[4m\33[1mGame over!!!\33[0m\n)。 return 1。 } return 0。 } void clear(int (*aa)[4]) { int i,j。 for(i = 0。 i 4。 i++){ for(j = 0。 j 4。 j++) aa[i][j] = 0。 } } int findfirstline(int(*bb)[4]) { int k,h,flag。 for(k=0。 k4。 k++) { flag=0。 for(h=0。 h4。 h++) { if(bb[k][h]) flag=1。 } if(flag) return k。 } } int findfirstrow(int (*bb)[4]) { int k,h,flag。 for(k=0。 k4。 k++) { flag=0。 12 for(h=0。 h4。 h++) { if(bb[h][k]) { flag=1。 } } if(flag) return k。 } } void change() { int bb[4][4] ={0}。 int i,j,k,h,p,q。 for(i = 0。 i 4。 i++){ for(j = 0。 j 4。 j++){ bb[j][i] = aa[i][3j]。 } } clear(aa)。 i=findfirstline(bb)。 j=findfirstrow(bb)。 for(k = i,p=0。 k4。 k++,p++){ for(h=j,q=0。 h4。 h++,q++) { aa[p][q]=bb[k][h]。 } } } void cheatbomb()。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。