One.java~1~
上传用户:liming9091
上传日期:2014-10-27
资源大小:3376k
文件大小:7k
源码类别:

Java编程

开发平台:

Java

  1. public class One extends Root//第一个方块
  2. {
  3. private GameTable gTable;//创建游戏桌子
  4. private int x,y;//方块坐上角现在在桌子上的位置
  5. private int direct=1;//第一个角度
  6. private int[] store;//储存待判断是否可以移动的周围必要的坐标标志
  7. public One()
  8. {
  9. store=new int[15];//15足够大了
  10. }
  11. public boolean begin()//初始化显示
  12. {
  13. //判断用于初始化的坐标是否被占用
  14. if((gTable.myTable[(gTable.x-1)/2][0]==0)&&(gTable.myTable[(gTable.x-1)/2][1]==0)&&
  15. (gTable.myTable[(gTable.x-1)/2][2]==0)&&(gTable.myTable[(gTable.x-1)/2][3]==0))
  16. {
  17. x=(gTable.x-1)/2;//记录坐上角坐标
  18. y=0;
  19. gTable.myTable[x][y]=1;//设置占用标志
  20. gTable.myTable[x][y+1]=1;
  21. gTable.myTable[x][y+2]=1;
  22. gTable.myTable[x][y+3]=1;
  23. return true;
  24. }
  25. else
  26. {
  27. return false;//初始化失败
  28. }
  29. }
  30. public boolean down()//向下移动
  31. {
  32. switch(direct)//根据角度标志,其他方块有的有2个角度,有的有4个角度
  33. {
  34.                  case 1:if(y<=gTable.y-5)//是否在边缘
  35.        {
  36.         store[0]=gTable.myTable[x][y+4];//储存待判断坐标
  37.         if(isGo(1))//判断是否可移
  38.         {
  39. gTable.myTable[x][y]=0;//将被移动坐标置0
  40. gTable.myTable[x][y+4]=1;//将目标坐标置1
  41. y+=1;//坐上角坐标移动
  42. return true;
  43.         }
  44.         else
  45.         {
  46. return false;//移动失败
  47.        }
  48. }
  49. else
  50. {
  51. return false;//移动失败
  52. }
  53. case 2:if(y<=gTable.y-2)//同case 1
  54. {
  55.         store[0]=gTable.myTable[x][y+1];
  56.         store[1]=gTable.myTable[x+1][y+1];
  57.                                 store[2]=gTable.myTable[x+2][y+1];
  58.         store[3]=gTable.myTable[x+3][y+1];
  59.         if(isGo(4))
  60.         {
  61. gTable.myTable[x][y]=0;
  62.          gTable.myTable[x+1][y]=0;
  63. gTable.myTable[x+2][y]=0;
  64. gTable.myTable[x+3][y]=0;
  65. gTable.myTable[x][y+1]=1;
  66. gTable.myTable[x+1][y+1]=1;
  67. gTable.myTable[x+2][y+1]=1;
  68. gTable.myTable[x+3][y+1]=1;
  69. y+=1;
  70. return true;
  71.     }
  72. else
  73. {
  74. return false;
  75. }
  76. }
  77. else
  78. {
  79. return false;
  80. }
  81. default:return false;
  82. }
  83. }
  84. public boolean left()//同down()
  85. {
  86. switch(direct)
  87. {
  88. case 1:if(x>=1)
  89. {
  90.          store[0]=gTable.myTable[x-1][y];
  91.         store[1]=gTable.myTable[x-1][y+1];
  92.         store[2]=gTable.myTable[x-1][y+2];
  93.         store[3]=gTable.myTable[x-1][y+3];
  94.         if(isGo(4))
  95.         {
  96. gTable.myTable[x][y]=0;
  97. gTable.myTable[x][y+1]=0;
  98. gTable.myTable[x][y+2]=0;
  99. gTable.myTable[x][y+3]=0;
  100. gTable.myTable[x-1][y]=1;
  101. gTable.myTable[x-1][y+1]=1;
  102. gTable.myTable[x-1][y+2]=1;
  103. gTable.myTable[x-1][y+3]=1;
  104. x-=1;
  105. return true;
  106.         }
  107.         else
  108.         {
  109. return false;
  110.       }
  111. }
  112. else
  113. {
  114. return false;
  115. }
  116. case 2:if(x>=1)
  117. {
  118.         store[0]=gTable.myTable[x-1][y];
  119.         if(isGo(1))
  120.         {
  121. gTable.myTable[x+3][y]=0;
  122. gTable.myTable[x-1][y]=1;
  123. x-=1;
  124. return true;
  125.     }
  126. else
  127. {
  128. return false;
  129. }
  130. }
  131. else
  132. {
  133. return false;
  134. }
  135. default:return false;
  136. }
  137. }
  138. public boolean right()//同down()
  139. {
  140. switch(direct)
  141. {
  142. case 1:if(x<=gTable.x-2)
  143. {
  144.          store[0]=gTable.myTable[x+1][y];
  145.         store[1]=gTable.myTable[x+1][y+1];
  146.         store[2]=gTable.myTable[x+1][y+2];
  147.         store[3]=gTable.myTable[x+1][y+3];
  148.         if(isGo(4))
  149.         {
  150. gTable.myTable[x][y]=0;
  151. gTable.myTable[x][y+1]=0;
  152. gTable.myTable[x][y+2]=0;
  153. gTable.myTable[x][y+3]=0;
  154. gTable.myTable[x+1][y]=1;
  155. gTable.myTable[x+1][y+1]=1;
  156. gTable.myTable[x+1][y+2]=1;
  157. gTable.myTable[x+1][y+3]=1;
  158. x+=1;
  159. return true;
  160.         }
  161.         else
  162.         {
  163. return false;
  164.       }
  165. }
  166. else
  167. {
  168. return false;
  169. }
  170. case 2:if(x<=gTable.x-5)
  171. {
  172.         store[0]=gTable.myTable[x+4][y];
  173.         if(isGo(1))
  174.         {
  175. gTable.myTable[x][y]=0;
  176. gTable.myTable[x+4][y]=1;
  177. x+=1;
  178. return true;
  179.     }
  180. else
  181. {
  182. return false;
  183. }
  184. }
  185. else
  186. {
  187. return false;
  188. }
  189. default:return false;
  190. }
  191. }
  192. public boolean change()//同down()
  193. {
  194. switch(direct)
  195. {
  196. case 1:if(x<=gTable.x-4)
  197. {
  198.          store[0]=gTable.myTable[x+1][y];
  199.         store[1]=gTable.myTable[x+1][y+1];
  200.         store[2]=gTable.myTable[x+1][y+2];
  201.         store[3]=gTable.myTable[x+1][y+3];
  202. store[4]=gTable.myTable[x+2][y];
  203. store[5]=gTable.myTable[x+2][y+1];
  204. store[6]=gTable.myTable[x+2][y+2];
  205. store[7]=gTable.myTable[x+2][y+3];
  206. store[8]=gTable.myTable[x+3][y];
  207. store[9]=gTable.myTable[x+3][y+1];
  208. store[10]=gTable.myTable[x+3][y+2];
  209. store[11]=gTable.myTable[x+3][y+3];
  210.         if(isGo(12))
  211.         {
  212. gTable.myTable[x][y]=0;
  213. gTable.myTable[x][y+1]=0;
  214. gTable.myTable[x][y+2]=0;
  215. gTable.myTable[x+1][y+3]=1;
  216. gTable.myTable[x+2][y+3]=1;
  217. gTable.myTable[x+3][y+3]=1;
  218. y+=3;
  219. direct=2;
  220. return true;
  221.         }
  222.         else
  223.         {
  224. return false;
  225.       }
  226. }
  227. else
  228. {
  229. return false;
  230. }
  231. case 2:if(true)
  232. {
  233.         store[0]=gTable.myTable[x][y-1];
  234.         store[1]=gTable.myTable[x][y-2];
  235.         store[2]=gTable.myTable[x][y-3];
  236.         store[3]=gTable.myTable[x+1][y-1];
  237. store[4]=gTable.myTable[x+1][y-2];
  238. store[5]=gTable.myTable[x+1][y-3];
  239. store[6]=gTable.myTable[x+2][y-1];
  240. store[7]=gTable.myTable[x+2][y-2];
  241. store[8]=gTable.myTable[x+2][y-3];
  242. store[9]=gTable.myTable[x+3][y-1];
  243. store[10]=gTable.myTable[x+3][y-2];
  244. store[11]=gTable.myTable[x+3][y-3];
  245.         if(isGo(12))
  246.         {
  247. gTable.myTable[x+1][y]=0;
  248. gTable.myTable[x+2][y]=0;
  249. gTable.myTable[x+3][y]=0;
  250. gTable.myTable[x][y-3]=1;
  251. gTable.myTable[x][y-2]=1;
  252. gTable.myTable[x][y-1]=1;
  253. y-=3;
  254. direct=1;
  255. return true;
  256.     }
  257. else
  258. {
  259. return false;
  260. }
  261. }
  262. else
  263. {
  264. return false;
  265. }
  266. default:return false;
  267. }
  268. }
  269. public void downTo()//一下到底
  270. {
  271. boolean canDown=true;
  272. while(canDown)
  273. {
  274. canDown=down();//循环向下移动一格
  275. }
  276. }
  277. public boolean isGo(int n)
  278. {
  279. for(int i=0;i<=(n-1);i++)
  280. {
  281. if(store[i]!=0)//如果有占位则失败
  282. return false;
  283. }
  284. return true;
  285. }
  286. public static void main(String args[])
  287. {
  288. new One();
  289. }
  290. }