Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

помогите помогите

59K
14 апреля 2010 года
sasha_hrom
1 / / 14.04.2010
Здравствуйте...
Нужно сделать что то на подобие тенниса что бы шар летал и ударяясь отлетал от стены по закону угл падения = углу отражения и что бы от платформы отскакивал с уклоном в 45 градусов...
Никак не дойдет как можно это реализовать...
Вот уже созданная часть программы...
Есть и шар летающий (правда по диагонали) и платформа от которой он отражается но вот с остальным...
Рассчитываю на вашу помощь...
Заранее спасибо...

Исходный код:


package javaapplication36;


import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.awt.geom.*;
import javax.swing.*;

class MyGamePanel extends JPanel implements Runnable{
Thread myJFrameThread;
int x = 250; //создаем переменные определяющие координаты положение шара
int y = 205;
int speed=10;
Color backgroundColor = new Color(0.5f,0.5f,0.5f,1f);
Ellipse2D myEllipse;
int scoure = 0; //создание новой переменной (счетчика)
int mx = 0; //создание переменных под координаты прямоугольника
int my =0;
MyGamePanel(){
if(myJFrameThread == null){
myJFrameThread = new Thread(this);
myJFrameThread.start();
}
setFocusable(true);
setSize(500,500);
addMouseListener(new MyML());
addMouseMotionListener(new MML());
setDoubleBuffered(true);
GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
env.getAvailableFontFamilyNames();
}

@Override
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2g = (Graphics2D) g;
g2g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);

g2g.setColor(backgroundColor);
Rectangle2D br = new Rectangle2D.Double(0,0,500,500);
g2g.fill(br);
backgroundColor = new Color(0.5f,0.5f,0.5f,1f);
Rectangle2D mouse = new Rectangle2D.Double(mx-10,my-30,20,60); //начальные координаты и размеры прямоугольника
g2g.setColor(Color.black); //цвет прямоугольника
g2g.fill(mouse);
myEllipse = new Ellipse2D.Double(x-10,y-10,20,20); //начальные координаты и размеры шарика
g2g.setColor(new Color(0.7f,0.7f,0.7f,0.7f)); // цвет шара
g2g.fill(myEllipse);

g2g.setFont(new Font("ComicSans", Font.PLAIN, 15)); //задаем шрифт и его значения
FontMetrics fm = g2g.getFontMetrics();
String s = "POPAL "+ scoure + " RAZ";
g2g.drawString(s, (500-fm.stringWidth(s))/2, 450);
}

public void run(){
while(true){
if(y+10<my+30&&mx-10<=x+10&&y+10>my-30)speed = - (speed); //проверяет координаты шара и прямоугольника и если условие подходит то шар останавливается (speed = - (speed))
try{
if(x>500-20){ //граница левой стенки
speed=-1; //задаем скорость отталкивания от левой стены
}else if (x<20){ //граница правой стенки
speed=+1; //задаем скорость отталкивания от правой стены
}x+=speed;
repaint();
Thread.sleep(1);
}catch(InterruptedException e){

}
try{
if(y>500-20){ //граница нижней стенки
speed=-1; //задаем скорость отталкивания от нижней стены
}else if (y<20){ //граница верхней стенки
speed=+1; //задаем скорость отталкивания от верхней стены
}y+=speed;
repaint();
Thread.sleep(1);
}catch(InterruptedException e){

}
}
}

class MML implements MouseMotionListener{

public void mouseDragged(MouseEvent e) {
throw new UnsupportedOperationException("Not supported yet.");
}

public void mouseMoved(MouseEvent e) {
mx=e.getX();
my=e.getY();
repaint();


}

}
class MyML extends MouseAdapter{
@Override
public void mouseReleased(MouseEvent e){
if(myEllipse.contains(e.getPoint())){
speed = - (speed);
System.out.println("POPAL");
scoure++;
repaint();
}
}
}
}


class MyFirstGame extends JFrame{
MyFirstGame(){
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(500,500);
setVisible(true);
setResizable(false);
MyGamePanel mgp = new MyGamePanel();
add(mgp);
}
}


public class Main {

public static void main(String[] args) {
new MyFirstGame();
}

}


P.S. Комментарии скорее всего кривые...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог