Sada je: 28 ožu 2024, 09:38.
C, C++, Java, PHP, Ruby...

Moderator/ica: Moderatori/ce

Pravila foruma
U naslovu teme unutar uglatih zagrada navesti o kojem jeziku je riječ. Primjer: [Java]
Znaci radim igricu onako iz dosade i u igrici se radi da skaces po kamenjima a kamenja nekad budu pokrivene vodom(nestanu) i ako igrac stoji na kamenu kad bude pokriven vodom on padne u vodu i izgubi igru. Ja sam za sad dosao do djela da sam napravio covjeka moze skakati po kamenjima ali sam zapeo na tome da kamenja(krugovi za sad) random nestanu i nakon random sekundi opet se pojave(ali da to sve nebude predugo). Ja sam nesto probavao ali su mi kamenja zbog necega cijelo vrijeme "nevidljiva". Ovo je moj kod:
Moja glavna klasa:
Kod: Označi sve
package com.pitcher654.main;

import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyListener;
import java.awt.image.BufferStrategy;
import java.util.Random;

import com.pitcher654.main.Game.STATE;

public class Game extends Canvas implements Runnable{
   
   private static final long serialVersionUID = -7800496711589684767L;
   
   public static final int WIDTH = 640, HEIGHT = WIDTH / 12 * 9;
   
   private Thread thread;
   private boolean running = false;
   private static final int NUM_STONES = 5; //broj kamenja i ostalo
   private boolean[] visible = new boolean[NUM_STONES];
   private long[] changeTimes = new long[NUM_STONES];
   private Random r;
   private Handler handler;
   //private HUD hud;
   private Menu menu;
   
   public enum STATE {
      Menu,
      Help,
      Game
   };
   
   public STATE gameState = STATE.Menu;
   
   public Game() {
      handler = new Handler();
      menu = new Menu(this, handler);
      this.addKeyListener(new KeyInput(handler));
      this.addMouseListener(menu);
      new Window(WIDTH, HEIGHT, "My game", this);
      
      //hud = new HUD();
      r = new Random();
      
      if(gameState == STATE.Game) {
         //handler.addObject(new Player(100, 200, ID.Player));
         for(int i=0; i<NUM_STONES; i++){
             visible[i] = true; // svaki kamen je na pocetku vidljiv
             changeTimes[i] = System.currentTimeMillis() + r.nextInt(10000); // svaki kamen ce nestati u manje od 10 sekundi
         }
      }
      
      //handler.addObject(new Player(100, 200, ID.Player));
      //handler.addObject(new BasicEnemy(100, 200, ID.BasicEnemy));
      
   }
   
   public synchronized void start() {
      thread = new Thread(this);
      thread.start();
      running = true;
   }
   
   public synchronized void stop() {
      try {
         thread.join();
         running = false;
      }catch(Exception ex) { ex.printStackTrace(); }
   }
   
   public void run()
    {
      this.requestFocus();
        long lastTime = System.nanoTime();
        double amountOfTicks = 60.0;
        double ns = 1000000000 / amountOfTicks;
        double delta = 0;
        long timer = System.currentTimeMillis();
        int frames = 0;
        while(running)
        {
                    long now = System.nanoTime();
                    delta += (now - lastTime) / ns;
                    lastTime = now;
                    while(delta >=1)
                            {
                                tick();
                                delta--;
                            }
                            if(running)
                                render();
                            frames++;
                           
                            if(System.currentTimeMillis() - timer > 1000)
                            {
                                timer += 1000;
                                //System.out.println("FPS: "+ frames);
                                frames = 0;
                            }
        }
                stop();
     }   
   
   private void tick() {
      handler.tick();
      //hud.tick();
      if(gameState == STATE.Game) {
         Random r = new Random();
         long now = System.currentTimeMillis();
         for(int i=0; i<NUM_STONES; i++){
             if(now < changeTimes[i]){ // ako je vrijeme doslo
                 if(visible[i]) changeTimes[i] = now + r.nextInt(5000); // svaki kamen ce biti nevidljiv do 5 sekundi
                 else changeTimes[i] = now + r.nextInt(10000); //svaki kamen ce opet biti vidljiv do 10 sekundi
                 visible[i] = !visible[i]; // napraviti ga (ne)vidljivog
            }
         }
      }else if(gameState == STATE.Menu) {
         menu.tick();
      }
   }
   
   private void render() {
      BufferStrategy bs = this.getBufferStrategy();
      if(bs == null) {
         this.createBufferStrategy(3);
         return;
      }
      
      Graphics g = bs.getDrawGraphics();
      
      g.setColor(new Color(87, 124, 212));
      g.fillRect(0, 0, WIDTH, HEIGHT);
      if(gameState == STATE.Game) {
         g.setColor(new Color(209, 155, 29));
         for(int i = 0; i < 5; i++) {
            g.fillOval(80 + (100 * i), 325, 70, 20);
         }
         if(gameState == STATE.Game) {

             for(int i = 0; i < NUM_STONES; i++) {
                 if(visible[i]) g.setColor(new Color(209, 155, 29));
                 else g.setColor(new Color(107, 155, 170));//promjeniti boju ako je (ne)vidljiv
                 g.fillOval(80 + (100 * i), 325, 70, 20);
             }
         }   
      }else if(gameState == STATE.Menu || gameState == STATE.Help){
         menu.render(g);
      }
      
      handler.render(g);
      
      if(gameState == STATE.Game) {
      }
      //hud.render(g);
      
      g.dispose();
      bs.show();
   }
   
   public static int clamp(int var, int min, int max) {
      if(var >= max)
         return var = max;
      else if(var <= max)
         return var = min;
      else
         return var;
   }
   
   public static void main(String[] args) {
      new Game();
   }
}


ako treba jos koja klasa samo recite

Hvala puno na pomoci!

pitcher654
Avatar
Postovi: 68
Postovi: 68
Pridružen/a: 11 tra 2015, 18:06
Podijelio/la zahvalu: 0 puta
Primio/la zahvalu: 0 puta
Spol: M
OS: Ubuntu, elemntary OS
Na mreži
Trenutno korisnika/ca: / i 9 gostiju.