Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- main.java
- ------------------
- package main;
- public class Main{
- public static void main(String[] args) {
- Engine engine = new Engine();
- engine.engine_init();
- }
- }
- ------------------
- Engine.java
- -----------------
- package main;
- import java.awt.Color;
- import java.awt.Graphics;
- import java.awt.Graphics2D;
- import java.awt.event.KeyEvent;
- import java.awt.event.KeyListener;
- import java.awt.image.BufferedImage;
- import java.io.File;
- import java.io.IOException;
- import java.util.*;
- import javax.imageio.ImageIO;
- import javax.swing.*;
- @SuppressWarnings("serial")
- public class Engine extends JPanel implements KeyListener {
- JFrame window = new JFrame("ja-rpg");
- BufferedImage image;
- boolean running = true;
- boolean debug_mode = true;
- String game_state;
- String[] sound_files;
- String[] music_files;
- Map<String, int[]> events_perform = new HashMap<>();
- Map<String, int[]> custom_variables = new HashMap<>();
- List<String> image_list = new ArrayList<>();
- List<Anims> anims_list = new ArrayList<>();
- List<Entity> entity_list = new ArrayList<>();
- List<World> world_list = new ArrayList<>();
- List<Gui> gui_list = new ArrayList<>();
- World world = new World();
- float num = 0;
- String input_pressed = "";
- boolean i_up = false;
- boolean i_down = false;
- boolean i_left = false;
- boolean i_right = false;
- Thread anims_core = new Thread(() -> {
- while(true)
- {
- try {
- Thread.sleep(1);
- for(Entity entity : entity_list)
- {
- entity.entity_anims.anim_update();
- }
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- });
- public Engine() {
- image_list.add("src/main/spr/im1.png");
- image_list.add("src/main/spr/im2.png");
- image_list.add("src/main/spr/im3.png");
- image_list.add("src/main/spr/im4.png");
- Anims down = new Anims();
- down.anim_name = "down_idle";
- down.engine = this;
- down.image_list.add(2);
- down.image_list.add(1);
- anims_list.add(down);
- //
- // Anims up = new Anims();
- // up.anim_name = "up_idle";
- // up.image_frames[0] = 14;
- // up.max_frame = 1;
- // anims_list.add(up);
- //
- // Anims u = new Anims();
- // u.anim_name = "left_idle";
- // u.image_frames[0] = 6;
- // u.max_frame = 1;
- // anims_list.add(u);
- //
- // Anims i = new Anims();
- // i.anim_name = "right_idle";
- // i.image_frames[0] = 8;
- // i.max_frame = 1;
- // anims_list.add(i);
- //
- // Anims p = new Anims();
- // p.anim_name = "up_walk";
- // p.image_frames[0] = 13;
- // p.image_frames[1] = 14;
- // p.image_frames[2] = 15;
- // p.image_frames[3] = 12;
- // p.max_frame = 4;
- // anims_list.add(p);
- //
- // Anims q = new Anims();
- // q.anim_name = "down_walk";
- // q.image_frames[0] = 1;
- // q.image_frames[1] = 2;
- // q.image_frames[2] = 3;
- // q.image_frames[3] = 0;
- // q.max_frame = 4;
- // anims_list.add(q);
- //
- // Anims w = new Anims();
- // w.anim_name = "left_walk";
- // w.image_frames[0] = 5;
- // w.image_frames[1] = 6;
- // w.image_frames[2] = 7;
- // w.image_frames[3] = 4;
- // w.max_frame = 4;
- // anims_list.add(w);
- //
- // Anims e = new Anims();
- // e.anim_name = "right_walk";
- // e.image_frames[0] = 9;
- // e.image_frames[1] = 10;
- // e.image_frames[2] = 11;
- // e.image_frames[3] = 8;
- // e.max_frame = 4;
- // anims_list.add(e);
- addKeyListener(this); // Agregar KeyListener al panel
- setFocusable(true);
- }
- public void gameloop()
- {
- anims_core.start();
- while(running == true)
- {
- try {
- Thread.sleep(1);
- long update_start = System.nanoTime();
- engine_update();
- long update_end = System.nanoTime();
- long update_passed = update_end - update_start;
- System.out.println("engine update time: "+String.valueOf(update_passed));
- update_start = System.nanoTime();
- engine_input();
- update_end = System.nanoTime();
- update_passed = update_end - update_start;
- System.out.println("input update time: "+String.valueOf(update_passed));
- update_start = System.nanoTime();
- repaint();
- update_end = System.nanoTime();
- update_passed = update_end - update_start;
- System.out.println("paint update time: "+String.valueOf(update_passed));
- } catch (InterruptedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- public void engine_init()
- {
- window.setSize(640, 480);
- window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- window.setResizable(false);
- window.setVisible(true);
- window.add(this);
- add_player_entity();
- gameloop();
- }
- @Override
- public void keyPressed(KeyEvent e) {
- int keyCode = e.getKeyCode();
- if (keyCode == KeyEvent.VK_UP) {
- i_up = true;
- }
- if (keyCode == KeyEvent.VK_DOWN) {
- i_down = true;
- }
- if (keyCode == KeyEvent.VK_LEFT) {
- i_left = true;
- }
- if (keyCode == KeyEvent.VK_RIGHT) {
- i_right = true;
- }
- if (keyCode == KeyEvent.VK_ENTER)
- {
- }
- }
- @Override
- public void keyReleased(KeyEvent e) {
- int keyCode = e.getKeyCode();
- if (keyCode == KeyEvent.VK_UP) {
- i_up = false;
- }
- if (keyCode == KeyEvent.VK_DOWN) {
- i_down = false;
- }
- if (keyCode == KeyEvent.VK_LEFT) {
- i_left = false;
- }
- if (keyCode == KeyEvent.VK_RIGHT) {
- i_right = false;
- }
- }
- @Override
- public void keyTyped(KeyEvent arg0) {
- // TODO Auto-generated method stub
- }
- public void engine_update()
- {
- for(Entity entity : entity_list)
- {
- entity.entity_update();
- }
- }
- public void add_player_entity()
- {
- int a = 0;
- for(int i = 0; i < 50; i++) //testing entities
- {
- Entity i1 = new Entity();
- i1.engine = this;
- i1.entity_init(1);
- i1.entity_id = i;
- i1.x += a;
- i1.y -= a;
- a += 50;
- entity_list.add(i1);
- }
- Entity entity = new Entity();
- entity.engine = this;
- entity.entity_init(0);
- entity.entity_id = -1;
- entity.y = 100;
- entity_list.add(entity);
- }
- public void engine_input()
- {
- input_pressed = "none";
- if(i_up == true)
- {
- input_pressed = "up";
- }
- if(i_down == true)
- {
- input_pressed = "down";
- }
- if(i_left == true)
- {
- input_pressed = "left";
- }
- if(i_right == true)
- {
- input_pressed = "right";
- }
- }
- @Override
- protected void paintComponent(Graphics g) {
- super.paintComponent(g);
- Graphics2D g2d = (Graphics2D) g;
- //g2d.clipRect(10, 10, 100, 100);
- for(Entity entity : entity_list)
- {
- if(entity.entity_chase_cam == true)
- {
- g2d.translate(-Math.round(entity.x)+(window.getWidth()/2), -Math.round(entity.y)+(window.getHeight()/2));
- }
- }
- //
- // g2d.drawImage(image, 10, 10, null);
- // Ejemplo: Dibuja un rectángulo rojo
- g2d.setColor(Color.RED);
- g2d.fillRect(50, 50, 100, 100);
- for(Entity entity : entity_list)
- {
- try {
- image = ImageIO.read(new File(entity.entity_anims.frame_to_render));
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- g2d.drawImage(image, (int) entity.x, (int) entity.y, null);
- if(entity.entity_name.equals("player"))
- {
- }
- }
- // for(int i = 0; i < entity_list.size()-1; i++ )
- // {
- // g2d.setColor(Color.GREEN);
- // g2d.drawLine((int) entity_list.get(i).rec_collider.getCenterX(),(int) entity_list.get(i).rec_collider.getCenterY(), (int) entity_list.get(i+1).rec_collider.getCenterX(), (int) entity_list.get(i+1).rec_collider.getCenterY());
- // }
- for(Entity entity : entity_list)
- {
- g2d.setColor(Color.black);
- g2d.drawRect((int)entity.x, (int)entity.y, entity.rec_collider.width, entity.rec_collider.height);
- g2d.drawRect((int)entity.rec_area_up.x, (int)entity.rec_area_up.y, entity.rec_area_up.width, entity.rec_area_up.height);
- g2d.drawRect((int)entity.rec_area_down.x, (int)entity.rec_area_down.y, entity.rec_area_down.width, entity.rec_area_down.height);
- g2d.drawRect((int)entity.rec_area_left.x, (int)entity.rec_area_left.y, entity.rec_area_left.width, entity.rec_area_left.height);
- g2d.drawRect((int)entity.rec_area_right.x, (int)entity.rec_area_right.y, entity.rec_area_right.width, entity.rec_area_right.height);
- if(debug_mode == true)
- {
- {
- g2d.drawString(String.valueOf(entity.rec_collider.getBounds()), (int) entity.x, (int) entity.y);
- g2d.drawString(String.valueOf(entity.entity_id), (int) entity.x, (int) entity.y-32);
- if(entity.entity_name.contains("player"))
- {
- g2d.setColor(Color.BLACK);
- g2d.drawString("X: "+String.valueOf(Math.round(entity.x))+" Y: "+String.valueOf(Math.round(entity.y)), Math.round(entity.x)-200, Math.round(entity.y)+16);
- g2d.drawString(input_pressed, Math.round(entity.x)-200, Math.round(entity.y)+32);
- g2d.drawString(String.valueOf(entity.rec_area_right_is_colliding), Math.round(entity.x)-200, Math.round(entity.y)+128);
- //g2d.drawRect(entity.rec_collider.x, entity.rec_collider.y, entity.rec_collider.width, entity.rec_collider.height);
- break;
- }
- }
- }
- }
- }
- }
- -----------------
- entity.java
- -----------------------
- package main;
- import java.awt.*;
- public class Entity{
- int entity_id = 0;
- int entity_type = -1;
- String entity_name;
- Rectangle rec_collider = new Rectangle();
- Rectangle rec_area_up = new Rectangle();
- Rectangle rec_area_down = new Rectangle();
- Rectangle rec_area_left = new Rectangle();
- Rectangle rec_area_right = new Rectangle();
- boolean enable_area_col = true;
- boolean rec_area_up_is_colliding = false;
- boolean rec_area_down_is_colliding = false;
- boolean rec_area_left_is_colliding = false;
- boolean rec_area_right_is_colliding = false;
- Engine engine;
- Anims entity_anims;
- String entity_direction = "none";
- String entity_facing_direction = "down";
- float x = 0;
- float y = 0;
- float entity_speed = (float) 0.5;
- boolean entity_collider = false;
- boolean entity_can_control = false;
- boolean entity_controlling = false;
- boolean on_event = false;
- boolean entity_chase_cam = false;
- boolean entity_enable_anims = true;
- boolean entity_custom_anims = false;
- boolean playing_anims = true;
- String entity_current_anims = "down_idle";
- String idle_up_anim = "up_idle";
- String idle_down_anim = "down_idle";
- String idle_left_anim = "left_idle";
- String idle_right_anim = "right_idle";
- String walk_up_anim = "up_walk";
- String walk_down_anim = "down_walk";
- String walk_left_anim = "left_walk";
- String walk_right_anim = "right_walk";
- String custom_anims = "none";
- public Entity(){}
- public void entity_init(int entity_type)
- {
- this.entity_type = entity_type;
- switch(entity_type)
- {
- case 0: // player
- {
- entity_name = "player";
- entity_collider = true;
- entity_can_control = true;
- on_event = false;
- entity_chase_cam = true;
- break;
- }
- case 1:
- {
- entity_name = "none";
- entity_collider = false;
- entity_can_control = false;
- entity_custom_anims = true;
- on_event = true;
- entity_chase_cam = false;
- break;
- }
- }
- }
- public void entity_update()
- {
- rec_collider.setSize(32, 32);
- rec_collider.setLocation((int) x, (int) y);
- rec_area_up.setLocation((int) x, (int) y-5);
- rec_area_up.setSize(32, 4);
- rec_area_down.setLocation((int) x, (int) y+33);
- rec_area_down.setSize(32, 4);
- rec_area_left.setLocation((int) x-5, (int) y);
- rec_area_left.setSize(4, 32);
- rec_area_right.setLocation((int) x+33, (int) y);
- rec_area_right.setSize(4, 32);
- if(entity_name.equals("player"))
- {
- entity_direction = engine.input_pressed;
- entity_controlling = false;
- }
- if(entity_can_control == true || on_event == true)
- {
- if(entity_collider == true)
- {
- for (Entity entity : engine.entity_list)
- {
- rec_area_up_is_colliding = false;
- rec_area_down_is_colliding = false;
- rec_area_left_is_colliding = false;
- rec_area_right_is_colliding = false;
- if(rec_area_up.intersects(entity.rec_area_down) && (this.entity_id != entity.entity_id)) {
- rec_area_up_is_colliding = true;
- }
- if(rec_area_down.intersects(entity.rec_collider) && (this.entity_id != entity.entity_id)) {
- rec_area_down_is_colliding = true;
- }
- if(rec_area_left.intersects(entity.rec_collider) && (this.entity_id != entity.entity_id)) {
- rec_area_left_is_colliding = true;
- }
- if(rec_area_right.intersects(entity.rec_collider) && (this.entity_id != entity.entity_id)) {
- rec_area_right_is_colliding = true;
- }
- if (this.rec_collider.intersects(entity.rec_collider) && (this.entity_id != entity.entity_id))
- {
- if(entity_facing_direction.equals("up"))
- {
- y += entity_speed;
- //break;
- }
- if(entity_facing_direction.equals("down"))
- {
- y -= entity_speed;
- //break;
- }
- if(entity_facing_direction.equals("left"))
- {
- x += entity_speed;
- //break;
- }
- if(entity_facing_direction.equals("right"))
- {
- x -= entity_speed;
- //break;
- }
- }
- }
- }
- if(entity_direction.equals("up") && (rec_area_up_is_colliding == false))
- {
- y -= entity_speed;
- entity_controlling = true;
- entity_facing_direction = "up";
- }
- if(entity_direction.equals("down"))
- {
- if(rec_area_down_is_colliding == false)
- {
- y += entity_speed;
- entity_controlling = true;
- entity_facing_direction = "down";
- }
- }
- if(entity_direction.equals("left"))
- {
- if(rec_area_left_is_colliding == false)
- {
- x -= entity_speed;
- entity_controlling = true;
- entity_facing_direction = "left";
- }
- }
- if(entity_direction.equals("right"))
- {
- if(rec_area_right_is_colliding == false)
- {
- x += entity_speed;
- entity_controlling = true;
- entity_facing_direction = "right";
- }
- }
- }
- if(entity_enable_anims == true)
- {
- for(Anims anims : engine.anims_list)
- {
- if(anims.anim_name.equals(entity_current_anims))
- {
- this.entity_anims = anims;
- }
- }
- if(entity_custom_anims == false)
- {
- if(entity_controlling == false)
- {
- if(entity_facing_direction.equals("up"))
- {
- entity_current_anims = idle_up_anim;
- }else if(entity_facing_direction.equals("down"))
- {
- entity_current_anims = idle_down_anim;
- }else if(entity_facing_direction.equals("left"))
- {
- entity_current_anims = idle_left_anim;
- }else if(entity_facing_direction.equals("right"))
- {
- entity_current_anims = idle_right_anim;
- }
- }else if(entity_controlling == true)
- {
- if(entity_facing_direction.equals("up"))
- {
- entity_current_anims = walk_up_anim;
- }else if(entity_facing_direction.equals("down"))
- {
- entity_current_anims = walk_down_anim;
- }else if(entity_facing_direction.equals("left"))
- {
- entity_current_anims = walk_left_anim;
- }else if(entity_facing_direction.equals("right"))
- {
- entity_current_anims = walk_right_anim;
- }
- }
- }
- }
- }
- }
- ------------------------
- anims.java
- ----------------------
- package main;
- import java.util.ArrayList;
- import java.util.List;
- public class Anims{
- List<Integer> image_list = new ArrayList<>();
- List<Integer> image_list_pivot_x = new ArrayList<>();
- List<Integer> image_list_pivot_y = new ArrayList<>();
- int max_frame;
- String anim_name = "none";
- String frame_to_render;
- Engine engine;
- int current_anims_frame = 0;
- float anims_frame_delay;
- float anims_frame_delay_speed = (float) 0.001;
- public Anims(){}
- public void anim_update()
- {
- max_frame = image_list.size()-1;
- anims_frame_delay -= anims_frame_delay_speed;
- if(anims_frame_delay <= 0)
- {
- current_anims_frame += 1;
- anims_frame_delay = 1;
- }
- if(current_anims_frame > max_frame)
- {
- current_anims_frame = 0;
- }
- frame_to_render = engine.image_list.get(this.image_list.get(current_anims_frame));
- // try {
- //
- // //engine.image = ImageIO.read(new File(""));
- // } catch (IOException e) {
- // // TODO Auto-generated catch block
- // e.printStackTrace();
- // }
- }
- }
- -----------------------
Advertisement
Add Comment
Please, Sign In to add comment