Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.12.2013, 16:50   #1
timedo
Пользователь
 
Аватар для timedo
 
Регистрация: 20.10.2012
Сообщений: 22
По умолчанию Мини игра Пин-понг

Здравствуйте, в целях изучения Java делаю мини-игру "пинг-понг", сейчас пытаюсь сделать просто что б шарик отскакивал от границ поля(низ, верх, лево, право). Вроде все правильно написал, но когда запускаю приложение шар стоит на месте, никуда ни двигается(работаю в Eclipse). Не знаю в чем проблема...

Имеется 3-и касса:
Main - рисуем поле, подключаем класс Field,
Field - поле, сюда будем добавлять все(шарик, игроков, бонусы,
Ball - сам шар.

Main
Код:
public class Main {
        public static void main(String[] args) {
            JFrame f = new JFrame("Pong");
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.setSize(400, 300);
            f.setBackground(Color.DARK_GRAY);
            f.add(new Field()); //подключаем наш класс Field
            f.setVisible(true);

        }

    }
Field
Код:
public class Field extends JPanel {
	
	Ball b = new Ball(193, 143); //задаем начальные координаты для шара
	
	public Field() { 
		Runnable r = b;
		
		Thread rt = new Thread(r);
		rt.start();
		
	}
		
	public void paint(Graphics g) { //рисуем шар
		b.draw(g);
		repaint();
	}
}

Ball
Код:
public class Ball implements Runnable{
	
	int x, y, xDerection, yDerection;
	
	Rectangle Ball;
	
	public Ball(int x, int y){ 
		this.x = x;
		this.y = y;
		
		Random r = new Random();
		
		int rDir = r.nextInt(1);
		if(rDir == 0) {
			rDir--;
		}
		setXDerection(rDir);
		
		int yDir = r.nextInt(1);
		if(yDir == 0) {
			yDir--;
		}
		setYDerection(yDir);
		
		Ball = new Rectangle(this.x, this.y, 7, 7);
	}
	
	public void setXDerection(int xDir) {
		xDerection = xDir;
	}
	
	public void setYDerection(int yDir) {
		yDerection = yDir;
	}
	
	public void movie() { //двигаем шар
		this.x = xDerection;
		this.y = yDerection;
		
		if(x <= 0) {
			setXDerection(+1);
		}
		if(x >= 385) {
			setXDerection(-1);
		}
		if(y <= 15) {
			setYDerection(+1);
		}
		if(y >= 285) {
			setYDerection(-1);
		}
	}
	
	public void draw(Graphics g) { //рисуем
		g.setColor(Color.WHITE);
		g.fillRect(Ball.x, Ball.y, Ball.width, Ball.height);
	} 
	
	
	public void run() { //запускаем
		try{
			while(true) {
				movie();
				Thread.sleep(3);
			}
		} 
		catch(Exception e) {
			System.err.println(e.getMessage());
		}
	}
}
Изображения
Тип файла: jpg Снимок.JPG (12.9 Кб, 146 просмотров)
timedo вне форума Ответить с цитированием
Старый 29.12.2013, 18:38   #2
timedo
Пользователь
 
Аватар для timedo
 
Регистрация: 20.10.2012
Сообщений: 22
По умолчанию

Всем спасибо, я разобрался, тему можно закрывать!
timedo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
мини игра nwhta C# (си шарп) 7 23.09.2013 18:04
Мини-игра на ДЕЛФИ. Николай1 Помощь студентам 5 28.11.2011 18:27
Пин Понг Wollfs Общие вопросы C/C++ 2 18.04.2011 20:33