Advertisement
Guest User

Untitled

a guest
Nov 11th, 2019
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.04 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.Random;
  3. import java.util.Scanner;
  4.  
  5. public class Game {
  6.  
  7. private Board ShipsBoard;
  8. private Board ShootingBoard;
  9.  
  10.  
  11. public Game(Board ShipsBoard, Board ShootingBoard){
  12. this.ShipsBoard = ShipsBoard;
  13. this.ShootingBoard = ShootingBoard;
  14.  
  15. }
  16. public void sb5(Board ShipBoard) {
  17. Random random = new Random();
  18. int x = random.nextInt(ShipBoard.getSize());
  19. int y = random.nextInt(ShipBoard.getSize());
  20. int orient = random.nextInt(2);
  21.  
  22. int shipLenght = 5;
  23.  
  24.  
  25. //if(ShipBoard.getField(x,y)==0
  26. if (orient == 0) {
  27. while (y > shipLenght) {
  28. y--;
  29. }
  30.  
  31.  
  32. for (int i = 0; i < shipLenght; i++) {
  33.  
  34. ShipsBoard.setField(x, y + i, '5');
  35. }
  36.  
  37. } else {
  38. while (x > shipLenght) {
  39. x--;
  40. }
  41.  
  42.  
  43. for (int i = 0; i < shipLenght; i++) {
  44.  
  45. ShipsBoard.setField(x + i, y, '5');
  46. }
  47.  
  48. }
  49. //ShipBoard.printBoardpom();
  50. }
  51.  
  52. public void sb4(Board ShipBoard) {
  53. Random random = new Random();
  54. int x = random.nextInt(ShipBoard.getSize());
  55. int y = random.nextInt(ShipBoard.getSize());
  56. int orient = random.nextInt(2);
  57. int shipLenght = 4;
  58.  
  59. if (orient == 0) {
  60. while (y > shipLenght) {
  61. y--;
  62. }
  63. if((x+1)>ShipBoard.getSize()-1||(x-1)<0||(y-1)<0||(y+4)>ShipBoard.getSize()){
  64. sb4(ShipBoard);
  65. }
  66. else if (ShipBoard.getField(x, y) == '0' && ShipBoard.getField(x-1, y) == 0&&ShipBoard.getField(x+1, y) == '0'&&
  67. ShipBoard.getField(x, y + 1) == '0' && ShipBoard.getField(x, y + 2) == 0 && ShipBoard.getField(x, y + 3) == '0'&&
  68. ShipBoard.getField(x+1, y + 1) == '0'&&ShipBoard.getField(x-1, y + 1) == '0'&&
  69. ShipBoard.getField(x+1, y + 2) == '0'&&ShipBoard.getField(x-1, y + 2) == '0'&&
  70. ShipBoard.getField(x+1, y + 3) == '0'&&ShipBoard.getField(x-1, y + 3) == '0'&&
  71. ShipBoard.getField(x, y + 4) == '0'&&ShipBoard.getField(x, y - 1) == '0') {
  72. for (int i = 0; i < shipLenght; i++) {
  73.  
  74. ShipsBoard.setField(x, y + i, '4');
  75. }
  76. } else {
  77. sb4(ShipBoard);
  78. }
  79.  
  80. } else {
  81. while (x > shipLenght) {
  82. x--;
  83. }
  84. if((y+1)>ShipBoard.getSize()-1||(y-1)<0||(x-1)<0||(x+4)>ShipBoard.getSize()){
  85. sb4(ShipBoard);
  86. }
  87. else if (ShipBoard.getField(x+1, y ) == '0' && ShipBoard.getField(x+2, y) == '0' && ShipBoard.getField(x+3, y) == '0'&&
  88. ShipBoard.getField(x, y+1 ) == '0'&&ShipBoard.getField(x, y-1 ) == '0'&&
  89. ShipBoard.getField(x+1, y + 1) == '0'&&ShipBoard.getField(x+1, y - 1) == '0'&&
  90. ShipBoard.getField(x+2, y + 1) == '0'&&ShipBoard.getField(x+2, y -1) == '0'&&
  91. ShipBoard.getField(x+3, y + 1) == '0'&&ShipBoard.getField(x+3, y -1) == '0'&&
  92. ShipBoard.getField(x+4, y ) == '0'&&ShipBoard.getField(x-1, y ) == '0') {
  93. for (int i = 0; i < shipLenght; i++) {
  94.  
  95. ShipsBoard.setField(x + i, y, '4');
  96. }
  97. } else {
  98. sb4(ShipBoard);
  99. }
  100.  
  101. }
  102.  
  103. //ShipsBoard.printBoardpom();
  104.  
  105.  
  106. }
  107.  
  108. public void sb3(Board ShipBoard) {
  109. Random random = new Random();
  110. int x = random.nextInt(ShipBoard.getSize());
  111. int y = random.nextInt(ShipBoard.getSize());
  112. int orient = random.nextInt(2);
  113. int shipLenght = 3;
  114.  
  115.  
  116. if (orient == 0) {
  117. while (y > shipLenght) {
  118. y--;
  119. }
  120. if((x+1)>ShipBoard.getSize()-1||(x-1)<0||(y-1)<0||(y+3)>ShipBoard.getSize()-1){
  121. sb3(ShipBoard);
  122. }
  123. else if (ShipBoard.getField(x, y) == '0' && ShipBoard.getField(x+1, y) == '0'&&ShipBoard.getField(x-1, y) == '0'&&
  124. ShipBoard.getField(x, y + 1) == '0' && ShipBoard.getField(x, y + 2) == '0'&&
  125. ShipBoard.getField(x+1, y + 1) == '0'&&ShipBoard.getField(x-1, y + 1) == '0'&&
  126. ShipBoard.getField(x+1, y + 2) == '0'&&ShipBoard.getField(x-1, y + 2) == '0'&&
  127. ShipBoard.getField(x, y + 3) == '0'&&ShipBoard.getField(x, y - 1) == '0') {
  128. for (int i = 0; i < shipLenght; i++) {
  129.  
  130. ShipsBoard.setField(x, y + i, '3');
  131. }
  132. } else {
  133. sb3(ShipBoard);
  134. }
  135.  
  136. } else {
  137. while (x > shipLenght) {
  138. x--;
  139. }
  140. if((y+1)>ShipBoard.getSize()-1||(y-1)<0||(x+3)>ShipBoard.getSize()-1||(x-1)<0){
  141. sb3(ShipBoard);
  142. }
  143. else if (ShipBoard.getField(x, y) == '0' && ShipBoard.getField(x, y+1) == '0'&&ShipBoard.getField(x, y-1) == '0'&&
  144. ShipBoard.getField(x+1, y ) == '0' && ShipBoard.getField(x+2, y ) == '0'&&
  145. ShipBoard.getField(x+1, y + 1) == '0'&&ShipBoard.getField(x+1, y - 1) == '0'&&
  146. ShipBoard.getField(x+2, y + 1) == '0'&&ShipBoard.getField(x+2, y -1) == '0'&&
  147. ShipBoard.getField(x+3, y ) == '0'&&ShipBoard.getField(x-1, y ) == '0') {
  148. for (int i = 0; i < shipLenght; i++) {
  149.  
  150. ShipsBoard.setField(x + i, y, '3');
  151. }
  152. } else {
  153. sb3(ShipBoard);
  154. }
  155. }
  156.  
  157.  
  158. }
  159. public void sb2(Board ShipBoard) {
  160. Random random = new Random();
  161. int x = random.nextInt(ShipBoard.getSize());
  162. int y = random.nextInt(ShipBoard.getSize());
  163. int orient = random.nextInt(2);
  164. int shipLenght = 2;
  165.  
  166.  
  167. if (orient == 0) {
  168. while (y > shipLenght) {
  169. y--;
  170. }
  171. if((x+1)>ShipBoard.getSize()-1||(x-1)<0||(y-1)<0||(y+2)>ShipBoard.getSize()-1){
  172. sb2(ShipBoard);
  173. }
  174. else if (ShipBoard.getField(x, y) == '0' && ShipBoard.getField(x+1, y) == '0'&&ShipBoard.getField(x-1, y) == '0'&&
  175. ShipBoard.getField(x, y + 1) == '0' &&
  176. ShipBoard.getField(x+1, y + 1) == '0'&&ShipBoard.getField(x-1, y + 1) == '0'&&
  177.  
  178. ShipBoard.getField(x, y + 2) == '0'&&ShipBoard.getField(x, y - 1) == '0') {
  179. for (int i = 0; i < shipLenght; i++) {
  180.  
  181. ShipsBoard.setField(x, y + i, '2');
  182. }
  183. } else {
  184. sb2(ShipBoard);
  185. }
  186.  
  187. } else {
  188. while (x > shipLenght) {
  189. x--;
  190. }
  191. if((y+1)>ShipBoard.getSize()-1||(y-1)<0||(x+2)>ShipBoard.getSize()-1||(x-1)<0){
  192. sb2(ShipBoard);
  193. }
  194. else if (ShipBoard.getField(x, y) == '0' && ShipBoard.getField(x, y+1) == '0'&&ShipBoard.getField(x, y-1) == '0'&&
  195. ShipBoard.getField(x+1, y ) == '0' &&
  196. ShipBoard.getField(x+1, y + 1) == '0'&&ShipBoard.getField(x+1, y - 1) == '0'&&
  197.  
  198. ShipBoard.getField(x+2, y ) == '0'&&ShipBoard.getField(x-1, y ) == '0') {
  199. for (int i = 0; i < shipLenght; i++) {
  200.  
  201. ShipsBoard.setField(x + i, y, '2');
  202. }
  203. } else {
  204. sb2(ShipBoard);
  205. }
  206. }
  207.  
  208.  
  209. }
  210. public void sb1(Board ShipBoard) {
  211. Random random = new Random();
  212. int x = random.nextInt(ShipBoard.getSize());
  213. int y = random.nextInt(ShipBoard.getSize());
  214. int orient = random.nextInt(2);
  215. int shipLenght = 1;
  216.  
  217.  
  218. if (orient == 0) {
  219. while (y > shipLenght) {
  220. y--;
  221. }
  222. if((x+1)>ShipBoard.getSize()-1||(x-1)<0||(y-1)<0||(y+1)>ShipBoard.getSize()-1){
  223. sb2(ShipBoard);
  224. }
  225. else if (ShipBoard.getField(x, y) == '0' && ShipBoard.getField(x+1, y) == '0'&&ShipBoard.getField(x-1, y) == '0'&&
  226.  
  227.  
  228.  
  229. ShipBoard.getField(x, y + 1) == '0'&&ShipBoard.getField(x, y - 1) == '0') {
  230. for (int i = 0; i < shipLenght; i++) {
  231.  
  232. ShipsBoard.setField(x, y + i, '1');
  233. }
  234. } else {
  235. sb1(ShipBoard);
  236. }
  237.  
  238. } else {
  239. while (x > shipLenght) {
  240. x--;
  241. }
  242. if((y+1)>ShipBoard.getSize()-1||(y-1)<0||(x+1)>ShipBoard.getSize()-1||(x-1)<0){
  243. sb2(ShipBoard);
  244. }
  245. else if (ShipBoard.getField(x, y) == '0' && ShipBoard.getField(x, y+1) == '0'&&ShipBoard.getField(x, y-1) == '0'&&
  246.  
  247.  
  248.  
  249. ShipBoard.getField(x+1, y ) == '0'&&ShipBoard.getField(x-1, y ) == '0') {
  250. for (int i = 0; i < shipLenght; i++) {
  251.  
  252. ShipsBoard.setField(x + i, y, '1');
  253. }
  254. } else {
  255. sb1(ShipBoard);
  256. }
  257. }
  258.  
  259.  
  260. }
  261. public void SetShipsOnBoard(Board board){
  262. sb5(board);
  263. sb4(board);
  264. sb3(board);
  265. sb2(board);
  266. sb1(board);
  267. }
  268. public void ShootField(int x, int y) {
  269.  
  270. if(isFieldClear(x,y)) {
  271.  
  272. if (ShipsBoard.getField(x,y) != '0' && ShipsBoard.getField(x,y) != '8') {
  273. int shiplength = ShipsBoard.getField(x,y);
  274. //Ship ship = ships_on_board.get(shiplength);
  275. int pom =ShipsBoard.getField(x,y);
  276. int count=0;
  277. int count1=0;
  278. ShootingBoard.setField(x,y,'x');
  279. ShipsBoard.setField(x,y,'x');
  280. System.out.println("Trafiony");
  281.  
  282. for(int i=0;i<ShipsBoard.getSize();i++){
  283. if(ShipsBoard.getField(i,y)==pom){
  284. count++;
  285. }
  286. if((ShipsBoard.getField(x,i)==pom)){
  287. count++;
  288. }
  289.  
  290.  
  291. }
  292. if(count==0){
  293. System.out.println("Statek zatopiony!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
  294.  
  295. for(int j =0;j<ShootingBoard.getSize();j++){
  296. for(int i=0;i<ShootingBoard.getSize();i++){
  297. if(ShootingBoard.getField(i,j)=='x'){
  298. ShootingBoard.setField(i,j,'Z');
  299. }
  300. }
  301. }
  302. }
  303. for(int i=0;i<ShipsBoard.getSize();i++){
  304. if(ShipsBoard.getField(i,y)==pom){
  305. count1++;
  306. }
  307. if((ShipsBoard.getField(x,i)==pom)){
  308. count1++;
  309. }
  310.  
  311.  
  312. }
  313.  
  314. }
  315. else {
  316. System.out.println("Eluwa nie trafiłeś " + x + y);
  317. ShootingBoard.setField(x,y,'*');
  318. }
  319.  
  320.  
  321. } else {
  322. System.out.println("W to pole już strzelałeś");
  323. }
  324.  
  325.  
  326. }
  327.  
  328. private boolean XYbelongsAB(int a, int b, int x, int y, int orient,int length){
  329. if(orient == 1){ //pionowa
  330.  
  331. for(int i = a; i < length; i++){
  332. if(i == x && y == b) return true;
  333. }
  334. } else { //pozioma
  335. for(int i = b; i < length; i++){
  336. if(x == a && i == y) return true;
  337. }
  338. }
  339.  
  340. return false;
  341. }
  342.  
  343. private boolean isFieldClear(int x, int y) {
  344.  
  345. if ((x > 10 || x < 0) || (y > 10 || y < 0)) System.out.println("Błędne współrzędne");
  346. else {
  347. if ((char) ShootingBoard.getField(x, y) == 'x' || (char) ShootingBoard.getField(x,y) == '*') return false;
  348. else return true;
  349. }
  350. return false;
  351. }
  352.  
  353. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement