Hej allesammen!
Er lige begyndt på at lære Java, egentlig fordi jeg er så træt af C++ GUI cross-platform librarys...
Jeg skal til at begynde på det hele fra en ende af, men blev lige pludselig fanget af ballistiske kurver, og var simpelthen nød til at prøve at tegne en.
Dog, "hakker" bolden helt utroligt, og kan ikke se hvad fejlen er i min kode:
Main
- package frozenlife;
-
-
- import java.text.*;
- import javax.swing.*;
-
-
- /**
- *
- * @author Jakob
- */
- public class Main {
-
- /**
- * @param args the command line arguments
- */
- public static void main(String[] args) {
-
- Ballistics panel = new Ballistics();
- JFrame window = new JFrame("Ballistics");
- window.add(panel);
- window.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
- window.setSize(500, 500);
- window.setVisible(true);
-
- for (double t=0; t<100000; t+=0.1)
- {
- double speed = 14, angle = 45;
- double speedX = speed * Math.cos(angle), speedY = speed * Math.sin(angle);
- double willHitIn = 2*speedY/9.82, xMax = 2*speedX * speedY / 9.82, yMax = Math.pow(speedY, 2) / (2 * 9.82);
- //DecimalFormat threeDigit = new DecimalFormat("#,##0.000");
- //System.out.println("Bolden rammer om: " + threeDigit.format(willHitIn) + " sekunder");
- //System.out.println("Den kommer " + threeDigit.format(xMax) + " meter og når en højde på " + threeDigit.format(yMax));
- //System.out.println("Efter 1 sek. er den er den koordinater: " + threeDigit.format(speedX*t) + " og " + threeDigit.format(speedY*t - 0.5*9.82*Math.pow(t, 2)));
- int pointY = (int) Math.round(speedY*(t/100) - 0.5*9.82*Math.pow((t/100), 2));
- int pointX = (int) Math.round(speedX*(t/100));
- panel.setPoint(pointX, pointY);
- panel.repaint();
- try { Thread.sleep(1); } catch (Exception e) {}
- }
- }
-
- }
Ballistics:
- /*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
-
- package frozenlife;
- import java.awt.*;
- import javax.swing.*;
-
- /**
- *
- * @author Jakob
- */
- public class Ballistics extends JPanel {
- private int x, y;
- public void paintComponent(Graphics g)
- {
- super.paintComponent(g);
- g.setColor(Color.GREEN);
- if(this.y < 0) this.y = 0;
- g.fillOval(this.x*5, this.y*5, 30, 30);
- }
-
- public void setPoint(int posX, int posY)
- {
- this.x = posX;
- this.y = posY;
- }
- }
Håber i kan hjælpe en nybegynder inden for Java.
Mvh
Jakob