Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 17:49 13.07.25 
Клубове/ Компютри и Интернет / Програмисти Пълен преглед*
Информация за клуба
Тема Айде малко да си размърдате мозъците
Автор jensen-110062 (рекордьор)
Публикувано23.09.11 22:22  



Предлагам ви моя елементарна сглобка на програмата за топки движещи се в панел.
Но се получава един странен ефект, който не мога да разбера от къде идва. Едната топка си върви нормално, а другата вибрира в горната част на панела.
Трябва да се направи панел с топки вътре (2 в моя случай), които се движат безразборно и си сменят посоката при сблъсък в стените на панела.
Ще се радвам ако някой я погледне и подскаже къде бъркам.
Пускам двата класа. Който намери грешката ще получи всичко, каквото си пожелае (виртуално) и разбира се моето признание . Хайде да ви видим

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

public class BouncingBalls {
public static void main(String[] args) {

JFrame frame=new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400,300);
Pan panel1=new Pan(Color.RED);
Pan panel2=new Pan(Color.BLUE);

panel1.add(panel2);
frame.add(panel1);

Thread t1=new Thread(panel1);
Thread t2=new Thread(panel2);

t1.start();
t2.start();

frame.setVisible(true);
}
}



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

public class Pan extends JPanel implements ActionListener, Runnable{

private int DIAMETER = 40;
private int ballX =0;
private int ballY =0;

private double ballSpeedX = Math.random()*20; // Ball's speed for x and y
private double ballSpeedY = Math.random()*20;

private int rightBound; // Maximum permissible x, y values.
private int bottomBound;
Timer time;
Color color;

public Pan(Color color) {
this.color=color;
setBackground(Color.WHITE);
time=new Timer(10, this);
time.start();

}

public void setBounds(int width, int height) {
rightBound = width - DIAMETER;
bottomBound = height - DIAMETER;
}

public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(color);
g.fillOval(ballX, ballY, DIAMETER, DIAMETER);
}

public void move() {
ballX += ballSpeedX;
ballY += ballSpeedY;

if (ballX < 0) {
ballX = 0;
ballSpeedX = -ballSpeedX;

} else if (ballX > rightBound) {
ballX = rightBound;
ballSpeedX = -ballSpeedX;
}

if (ballY < 0) {
ballY = 0;
ballSpeedY = -ballSpeedY;

} else if (ballY > bottomBound) {
ballY = bottomBound;
ballSpeedY = -ballSpeedY;
}

}

public void actionPerformed (ActionEvent event) {
setBounds(getWidth(), getHeight());
move();
repaint();
}

public void run() {
try {
Thread.sleep( 20 );
}
catch ( InterruptedException exception ) {
System.err.println( exception.toString() );
}
time.start();
}
}




Цялата тема
ТемаАвторПубликувано
* Айде малко да си размърдате мозъците jensen-110062   23.09.11 22:22
. * Re: Айде малко да си размърдате мозъците zaphod   24.09.11 08:19
. * Подозренията ми за този клуб се потвърждават Deern   24.09.11 19:13
. * Re: Подозренията ми за този клуб се потвърждават jensen-110062   24.09.11 19:47
. * Re: Подозренията ми за този клуб се потвърждават jeweel   25.09.11 01:42
. * Re: Подозренията ми за този клуб се потвърждават NikiFin   25.09.11 19:26
. * криво лево работещо решение jensen-110062   24.09.11 19:49
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2025 Dir.bg Всички права запазени.