Главная » Статьи » Игры на java

Первая игра на Java (часть-2)

Вводим класс обработчика событий клавиатуры - по умолчанию все методы пустые (нужные активируем сами).

package jgames1;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

/**
 * Created by nikelen on 2017-01-29.
 */
public class Road extends JPanel implements ActionListener { // класс дорога помещаем на панель

 Timer mainTimer = new Timer(20,this);// Таймер(класс) будет каждые 20мс запускать функцию actionPerformed(this)
 Image img = new ImageIcon("res/dor.jpg").getImage();//загрузка картинки дороги
 Player p = new Player();// инициализ класс плеер

 public Road(){// конструктор 
 mainTimer.start();// запуск Таймера

 addKeyListener(new MyKeyAdapter()); // добавляем обработчик соб. клавиатуры
 setFocusable(true); //делаем дорогу в фокусе(для нажатия клавиш)

 }

 private class MyKeyAdapter extends KeyAdapter {// наследуем класс обработчик, в котором все методы пустые(реализуем нужные)
 public void keyPressed(KeyEvent e){ // перегружаем метод нажатия клавиши
 p.keyPressed(e); // вызов метода keyPressed для рlayer
 }
 public void keyReleased(KeyEvent e){ // перегружаем метод отпускания клавиши
 p.keyReleased(e); // вызов метода для рlayer
 }
 }
 public void paint(Graphics g) { // метод перерисовывает панель
 g = (Graphics2D) g;// приведение типов(рисует Graphics2D)
 g.drawImage(img, p.layer1, 0, null); //рисуем(что,x-слой1 и у не изменяем,...)
 g.drawImage(img, p.layer2, 0, null);
 g.drawImage(p.img, p.x, p.y, null);//рисуем(для плеер метод имж,х-плеер и у-плеер,...)

 }
 public void actionPerformed(ActionEvent e){
 p.move(); //плеер перемещается(метод player)
 repaint(); //перересовывет всё
 }

}

--------------------------------------------------------  ------------------------------------------------------

package jgames1;

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;

/**
 * Created by nikelen on 2017-01-29.
 */
public class Player {

 Image img = new ImageIcon("res/f_l1.png").getImage();//загрузка картинки

 int v = 4; // скорость
 int dv = 0; // ускорение
 int s = 0; //путь
 int x = 30; // нач координаты
 int y = 100;
 int layer1 = 0; // первый слой(дорога)
 int layer2 = 1200;
 public void move() { // метод движения
 s+= v; // путь увеличивается
 if (layer2 -v <= 0){
 layer1 = 0;
 layer2 = 1200;
 }
 else{
 layer1 -= v;//слой уменьется
 layer2 -= v;
 }
 }
 public void keyPressed(KeyEvent e){ //метод обработки события нажатие клавиши
 JOptionPane.showMessageDialog(null, "key pressed");
 }
 public void keyReleased(KeyEvent e){ //метод обработки события отуск клавиши
 JOptionPane.showMessageDialog(null, "key pressed");;
 }

}

############################################################

Перемещение машины право-лево , с ограничениями по скорости и направлениям

package jgames1;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;

/**
 * Created by nikelen on 2017-01-29.
 */
public class Road extends JPanel implements ActionListener { // класс дорога помещаем на панель

 Timer mainTimer = new Timer(20,this);// Таймер(класс) будет каждые 20мс запускать какую то функцию actionPerformed(this)
 Image img = new ImageIcon("res/dor.jpg").getImage();//загрузка картинки дороги
 Player p = new Player();// инициализ класс плеер

 public Road(){// конструктор
 mainTimer.start(); //запуск Таймера
 addKeyListener(new MyKeyAdapter()); // добавляем обработчик соб. клавиатуры
 setFocusable(true);//делаем дорогу в фокусе (для нажатия клавиш)
 }

 private class MyKeyAdapter extends KeyAdapter {// наследуем класс обработчик, в котором все методы пустые(реализуем нужные)
 public void keyPressed(KeyEvent e){ // перегружаем метод нажатия клавиши
 p.keyPressed(e); // вызов метода keyPressed для рlayer
 }
 public void keyReleased(KeyEvent e){ // перегружаем метод отпускания клавиши
 p.keyReleased(e); // вызов метода для рlayer
 }
 }
 public void paint(Graphics g) { // метод перерисовывает панель
 g = (Graphics2D) g;// приведение типов(рисует Graphics2D)
 g.drawImage(img, p.layer1, 0, null); //рисуем(что,x-слой1 и у не изменяем,...)
 g.drawImage(img, p.layer2, 0, null);
 g.drawImage(p.img, p.x, p.y, null);//рисуем(для плеер метод имж,х-плеер и у-плеер,...)

 }
 public void actionPerformed(ActionEvent e){
 p.move(); //плеер перемещается
 repaint(); //перересовывет всё
 }

}

------------------------------------------------        -------------------------------------------------------------

package jgames1;

import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;

/**
 * Created by nikelen on 2017-01-29.
 */
public class Player {

 public static final int MAX_V = 50; //мах ускорение
 public static final int MAX_TOP = 10;// мах верх положение
 public static final int MAX_BOTTOM = 480;// мах нижнее положение
 Image img = new ImageIcon("res/f_l1.png").getImage();//загрузка картинки

 int v = 0; // скорость
 int dv = 0; // ускорение
 int s = 0; //путь
 int x = 30; // нач координаты
 int y = 100;
 int dy = 0;
 int layer1 = 0; // первый слой(дорога)
 int layer2 = 1200;

 public void move() { // метод движения
 s+= v; // путь увеличивается
 v +=dv;// скорость увеличивается
 if (v <= 0) v = 0;//если скорость =0
 if (v>= MAX_V) v = MAX_V;// если скорость болье мах
 y-=dy;// изменение координаты у(зависит от поворота)
 if (y<= MAX_TOP) y = MAX_TOP;// верхняя граница
 if (y>= MAX_BOTTOM) y = MAX_BOTTOM;// нижняя граница
 if (layer2 -v <= 0){// цикл показа слоёв дороги
 layer1 = 0;
 layer2 = 1200;
 }
 else{
 layer1 -= v;//слой уменьется
 layer2 -= v;
 }
 }
 public void keyPressed(KeyEvent e){ //метод обработки события нажатие клавиши
 int key = e.getKeyCode();//получаем код нажатой клавиши
 if (key == KeyEvent.VK_RIGHT) {// если курс влево
 dv = 5; //ускорение +
 }
 if (key == KeyEvent.VK_LEFT) {// если курс влево
 dv = -5; //ускорение -
 }
 if (key == KeyEvent.VK_UP) {// если курс вверх
 dy = 10; //поворот +
 }
 if (key == KeyEvent.VK_DOWN) {// если курс вниз
 dy = -10; //поворот -
 }
 }
 public void keyReleased(KeyEvent e) { //метод обработки события отуск клавиши
 int key = e.getKeyCode();//получаем код нажатой клавиши
 if (key == KeyEvent.VK_RIGHT || key == KeyEvent.VK_LEFT) {// если курс влево
 dv = 0; //ускорение 0
 }
 if (key == KeyEvent.VK_UP || key == KeyEvent.VK_DOWN) {// если курс влево
 dy = 0; //ускорение 0
 }
 }
}

###############################################################################

Категория: Игры на java | Добавил: kuzma (30.01.2017)
Просмотров: 447 | Рейтинг: 0.0/0
Всего комментариев: 0
avatar

Программирование игр на Python

Django - создание сайтов с нуля

Javascript - просто используем готовые решения