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

Java编程

开发平台:

Java

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