Игра начинающего программиста - Java

Узнай цену своей работы

Формулировка задачи:

В общем проблема такая есть игра, когда её запускаешь, то какой бы ты не выбрал уровень сложности то все равно выпадают только 2 вида картинок, а их 7! Код игры: okno:
Листинг программы
  1. // Подключения необходимых библиотек
  2. import javax.swing.*;
  3. import java.awt.*;
  4. import java.awt.event.*;
  5. // Класс окна, в котором размещено игровое поле
  6. class okno extends JFrame
  7. {
  8. private static final long serialVersionUID = 1L;
  9. private pole gameP; // Закрытая Переменная класса - игровое поле
  10. private int slogn; // Закрытая Переменная класса - сложность игры
  11. // Обработчик событий нажатий на клавиши
  12. private class myKey implements KeyListener
  13. {
  14. // Метод, который срабатывает при нажатии
  15. public void keyPressed(KeyEvent e)
  16. {
  17. // Получение кода нажатой клавиши
  18. int key_ = e.getKeyCode();
  19. // Выход из программы, если нажат - Esc
  20. if (key_==27) System.exit(0);
  21. else if (key_==37) // Если нажата стрелка влево
  22. {
  23. // Контроль перемещения влево за пределы окна
  24. if (gameP.x-30>-48) gameP.x-=30;
  25. else gameP.x=752;
  26. }
  27. /*else if (key_==38) // Если нажата стрелка вверх
  28. {
  29. // Контроль перемещения вверх за пределы окна
  30. if (gameP.y-30>0) gameP.y-=30;
  31. else gameP.y=465;
  32. }
  33. else if (key_==40) // Если нажата стрелка down
  34. {
  35. // Контроль перемещения down за пределы окна
  36. if (gameP.y+30<465) gameP.y+=30;
  37. else gameP.y=0;
  38. }*/
  39. else if (key_==39) // Если нажата стрелка вправо
  40. {
  41. // Контроль перемещения вправо за пределы окна
  42. if (gameP.x+30<752) gameP.x+=30;
  43. else gameP.x=-48;
  44. }
  45. }
  46. public void keyReleased(KeyEvent e) {}
  47. public void keyTyped(KeyEvent e) {}
  48. }
  49. // Конструктор класса
  50. public okno(int slogn)
  51. {
  52. // Помещение сложности, выбранной пользователем в переменную класса
  53. this.setSlogn(slogn);
  54. // Подключение обработчика события для клавиатуры к окну
  55. addKeyListener(new myKey());
  56. // Установка активности окна
  57. setFocusable(true);
  58. // Задание размеров и положения окна
  59. setBounds(10,10,800,600);
  60. // Задание заголовка окна
  61. setTitle("Игра: Помоги системному администратору");
  62. // Запрет изменения размеров окна
  63. setResizable(false);
  64. // Операция завершения работы приложения при
  65. // закрытии окна
  66. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  67. // Создание объекта - игрового поля
  68. gameP = new pole(slogn);
  69. // Прикрепление (вложение) панели - игрового поля в окно
  70. Container con = getContentPane();
  71. con.add(gameP);
  72. // Сделать окно видимым
  73. setVisible(true);
  74. }
  75. public int getSlogn() {
  76. return slogn;
  77. }
  78. public void setSlogn(int slogn) {
  79. this.slogn = slogn;
  80. }
  81. }
  82. game:
  83. // Подключения необходимых библиотек
  84. import javax.swing.*;
  85. // Главный класс игры
  86. public class game {
  87. //private static okno window;
  88. private static okno window;
  89. // Главный метод, который запускает игру
  90. public static void main(String[] args) {
  91. // Вызов диалогового окна для ввода сложности игры
  92. String rez = JOptionPane.showInputDialog(null,"Введите сложность игры от 1 до 7:","Сложность игры",1);
  93. // Помещение результата выбора в переменную целого типа
  94. int slogn = rez.charAt(0)-'0';
  95. // Проверка, что введена цифра от 1 до 7
  96. if ((slogn>=1)&&(slogn<=7))
  97. {
  98. setWindow(new okno(slogn));
  99. }
  100. }
  101. public static okno getWindow() {
  102. return getWindow();
  103. }
  104. public static void setWindow(okno window) {
  105. game.window = window;
  106. }
  107. }
  108. pole:
  109. import javax.imageio.*;
  110. import javax.swing.*;
  111. import java.awt.*;
  112. import java.awt.event.*;
  113. import java.io.*;
  114. class pole extends JPanel
  115. {
  116. private Image shapka;
  117. private Image fon;
  118. public int x = 400;
  119. private int slogn;
  120. public int summ=0;
  121. private podar[] gamePodar;
  122. private podar[] gameBomb;
  123. private Image end_game;
  124. public Timer timerUpdate,timerDraw;
  125. public pole(int slogn)
  126. {
  127. this.slogn = slogn;
  128. try
  129. {
  130. shapka = ImageIO.read(new File("shapka.png"));
  131. }
  132. catch(IOException ex) {}
  133. try
  134. {
  135. fon = ImageIO.read(new File("fon.png"));
  136. }
  137. catch(IOException ex) {}
  138. try
  139. {
  140. end_game = ImageIO.read(new File("end_game.png"));
  141. }
  142. catch(IOException ex) {}
  143. gamePodar = new podar[7];
  144. for (int n=0;n<7;n++)
  145. {
  146. try
  147. {
  148. gamePodar[n] = new podar(ImageIO.read(new File("n"+n+".png")));
  149. }
  150. catch (IOException ex) {}
  151. }
  152. gameBomb = new podar[7];
  153. for (int i=0;i<7;i++)
  154. {
  155. try
  156. {
  157. gameBomb[i] = new podar(ImageIO.read(new File("d"+i+".png")));
  158. }
  159. catch (IOException ex) {}
  160. }
  161.  
  162. timerUpdate = new Timer(3000,new ActionListener() {
  163. public void actionPerformed(ActionEvent e) {
  164. updateStart();
  165. }
  166. });
  167. timerUpdate.start();
  168. timerDraw = new Timer(50,new ActionListener() {
  169. public void actionPerformed(ActionEvent e) {
  170. repaint();
  171. }
  172. });
  173. timerDraw.start();
  174. }
  175. public void paintComponent(Graphics gr)
  176. {
  177. super.paintComponent(gr);
  178. gr.drawImage(fon, 0, 0, null);
  179. gr.drawImage(shapka, x, 465, null);
  180. ///!!!!!!!!!!!!!!!!!!!!!!!!!ОТРИСОВКА СЧЕТА ИГРЫ
  181. String str=Integer.toString(summ);
  182. gr.setFont(new Font("Courier New", Font.ITALIC, 30));
  183. gr.setColor(Color.white);
  184. gr.drawString(str, 50, 50);
  185.  
  186. for (int i=0;i<7;i++)
  187. {
  188. gamePodar[i].draw(gr);
  189. if (gamePodar[i].act==true)
  190. {
  191. if ((gamePodar[i].y+gamePodar[i].img.getHeight(null))>=470)
  192. {
  193. if (Math.abs(gamePodar[i].x - x) > 75)
  194. {
  195. gr.drawImage(end_game, 0, 0, null);
  196. timerDraw.stop();
  197. timerUpdate.stop();
  198. break;
  199. }
  200. else {
  201. gamePodar[i].act=false;
  202. //СЧЕТ
  203. summ=summ+1;
  204. }
  205. }
  206. }
  207. }
  208. //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
  209. for (int i=0;i<7;i++)
  210. {
  211. gameBomb[i].draw(gr);
  212. if (gameBomb[i].act==true)
  213. {
  214. if ((gamePodar[i].y+gameBomb[i].img.getHeight(null))>=470)
  215. {
  216. if (Math.abs(gameBomb[i].x - x) < 75)
  217. {
  218. gr.drawImage(end_game, 0, 0, null);
  219. timerDraw.stop();
  220. timerUpdate.stop();
  221. break;
  222. }
  223. else gameBomb[i].act=false;
  224. //СЧЕТ
  225. summ=summ+1;
  226. }
  227. }
  228. }
  229.  
  230. }
  231. private void updateStart()
  232. {
  233. int kol=0;
  234. for (int i=0;i<7;i++)
  235. {
  236. if (gamePodar[i].act==false)
  237. {
  238. if (kol<slogn)
  239. {
  240. gamePodar[i].start();
  241. gameBomb[i].start();
  242. break;
  243. }
  244. }
  245. else kol++;
  246. }
  247. }
  248. }
  249. podar:
  250. /* Подключения необходимых библиотек*/
  251. import javax.swing.*;
  252. import java.awt.*;
  253. import java.awt.event.*;
  254. // Класс для подарка, падающего сверху
  255. class podar {
  256. public Image img; // Изображение подарка
  257. public int x,y; // Положение подарка на игровом поле, в пикселях, x - отступ слева, y - отступ сверху
  258. public Boolean act; // Переменная логического типа, показывающая активность подарка, есть он игровом поле или нет
  259. Timer timerUpdate; // Таймер, отвечающий за движение подарка вниз
  260. // Конструктор класса
  261. public podar(Image img)
  262. {
  263. // Создание и настройка таймера, отвечающего за движение подарка вниз
  264. timerUpdate = new Timer(150,new ActionListener() {
  265. public void actionPerformed(ActionEvent e) {
  266. vniz(); // Метод, осуществляющий движение подарка вниз
  267. }
  268. });
  269. this.img = img; // Передача изображения из круглых скобок Конструктора класса в переменную класса
  270. act=false; // Изначально делаем подарок неактивным, отсутствующим на игровом поле
  271. }
  272. // Метод, выполняющий активизацию подарка на игровом поле, вывод его сверху игрового поля
  273. public void start()
  274. {
  275. timerUpdate.setDelay(100); // Установка временной задержки для таймера
  276. timerUpdate.start(); // Запуск таймера
  277. y = 0; // Отступ сверху в пикселях
  278. x = (int)(Math.random()*700); // Отступ слева в пикселях, получаем случайным образом от 0 до 700
  279. act = true; //
  280. }
  281. // Метод, осуществляющий движение подарка вниз
  282. public void vniz()
  283. {
  284. if (act==true) // Если подарок активен на игровом поле
  285. {
  286. y+=9; // Увеличение отступа сверху на 10 пикселей
  287. }
  288. if ((y+img.getHeight(null))>=470) // Если подарок достиг нижней границы
  289. {
  290. timerUpdate.stop(); // Остановка таймера
  291. }
  292. }
  293. // Метод, выполянющий отрисовку подарка на игровом поле, если он активен
  294. public void draw(Graphics gr)
  295. {
  296. if (act==true)
  297. {
  298. gr.drawImage(img,x,y,null); // Рисование изображения
  299. }
  300. }
  301. }

Решение задачи: «Игра начинающего программиста»

textual
Листинг программы
  1. gr.setFont(font);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы