para un proyecto de la universidad se nos pidió realizar un programa tipo test de reflejos y coordinacion como el que realizan para obtener la licencia de conducción, de momento tengo una carretera recta hecha pero no se como generarle las curvas, este es el codigo en cuestion:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.Timer;
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
*/
/**
*
* @author Estudiantes
*/
public class Culebrita extends JFrame {
boolean GameOver = false;
DibujarTest lineas;
int ancho = 640;
int alto = 480;
int longitud1 = 2;
int longitud2 = 2;
Point lineaderecha1;
Point lineaderecha2;
ArrayList<Point> listalineaderecha1 = new ArrayList<Point>();
ArrayList<Point> listalineaderecha2 = new ArrayList<Point>();
int widthPoint = 10;
int heightPoint = 10;
String curva = "recto";
long frecuencia = 50;
public Culebrita() {
setTitle("Test de conduccion");
StartGame();
setSize(ancho, alto);
this.addKeyListener(new Teclas());
lineas = new DibujarTest();
this.getContentPane().add(lineas);
setVisible(true);
Momento momento = new Momento();
Thread hilo = new Thread(momento);
hilo.start();
this.setLocationRelativeTo(null);
}
public void StartGame() {
lineaderecha1 = new Point(400, 0);
lineaderecha2 = new Point(500, 0);
listalineaderecha1 = new ArrayList<Point>();
listalineaderecha2 = new ArrayList<Point>();
for (int i = 0; i < 48; i++) {
listalineaderecha1.add(new Point(lineaderecha1.x, lineaderecha1.y - 10));
}
for (int i = 0; i < 48; i++) {
listalineaderecha2.add(new Point(lineaderecha2.x, lineaderecha2.y - 10));
}
longitud1 = listalineaderecha1.size();
longitud2 = listalineaderecha2.size();
}
public static void main(String[] args) {
Culebrita culebrita = new Culebrita();
}
public class Teclas extends KeyAdapter {
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ESCAPE) {
System.exit(0);
}
}
}
public class DibujarTest extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.black);
// g.fillRect(culebrita.x, culebrita.y, 10, 10);
if (listalineaderecha1.size() > 0) {
for (int i = 0; i < 48; i++) {
Point p = (Point) listalineaderecha1.get(i);
g.fillRect(p.x, p.y, widthPoint, heightPoint);
}
}
if (listalineaderecha2.size() > 0) {
for (int i = 0; i < listalineaderecha2.size(); i++) {
Point p = (Point) listalineaderecha2.get(i);
g.fillRect(p.x, p.y, widthPoint, heightPoint);
}
}
}
}
public void actualizar() {
listalineaderecha1.add(0, new Point(lineaderecha1.x, lineaderecha1.y));
listalineaderecha1.remove(listalineaderecha1.size() - 1);
listalineaderecha2.add(0, new Point(lineaderecha2.x, lineaderecha2.y));
listalineaderecha2.remove(listalineaderecha2.size() - 1);
lineas.repaint();
}
public class Momento extends Thread {
private long last = 0;
public Momento() {
}
public void run() {
while (true) {
if ((java.lang.System.currentTimeMillis() - last) > frecuencia) {
if (!GameOver) {
if (curva == "recto") {
lineaderecha1.y = lineaderecha1.y + heightPoint;
lineaderecha2.y = lineaderecha2.y + heightPoint;
if (lineaderecha1.y > 480 || lineaderecha2.y > 480) {
lineaderecha1.y = 0;
lineaderecha2.y = 0;
}
}
}
actualizar();
last = java.lang.System.currentTimeMillis();
}
}
}
}
}
me podrian ayudar con ello, por favor, solo necesito saber como hacer las curvas
New contributor
juan alejandro giraldo marin is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.