private static void buildCache(String arg) throws Exception { System.out.println("Loading map..."); List<Chunk> chunks = loadChunks(arg); Rectangle boundingBox = findBoundingBox(chunks); // Convert the chunk bounding box to coordinates bounding box. boundingBox = new Rectangle( boundingBox.getX1() * 16, boundingBox.getY1() * 16, boundingBox.getX2() * 16, boundingBox.getY2() * 16); System.out.println( "Active bounding box: " + boundingBox.getX1() + "x" + boundingBox.getY1() + " " + boundingBox.getX2() + "x" + boundingBox.getY2()); // Build a map of all blocks located at the target coordinates. We add // room to Y. System.out.println("Building block cache..."); BlockMap blockMap = BlockMap.build(chunks, boundingBox, MIN_Y, MAX_Y); blockMap.save(new File(CACHE_FILE)); }
public void render(GameContainer container, Graphics g) { map.getTmap().render(0, 0); // Renders the random landscape objects,which were generated in map. ArrayList<Item> objects = map.getObjects(); for (int i = 0; i < objects.size(); i++) { container .getGraphics() .drawImage(objects.get(i).getImage(), objects.get(i).getX(), objects.get(i).getY()); } if (!finished) { ArrayList<Landmark> landmarks = map.getLandmarks(); for (Landmark landmark : landmarks) { g.drawImage(landmark.getImage(), landmark.getTileX(), landmark.getTileY()); } ArrayList<Avatar> avatars = map.getAvatars(); for (int i = 0; i < avatars.size(); i++) { g.drawAnimation( avatars.get(i).getImage(), avatars.get(i).getPosX(), avatars.get(i).getPosY()); if (avatars.get(i).getPosX() / 16 >= 33.0 && avatars.get(i).getPosX() / 16 <= 36.0 && avatars.get(i).getPosY() / 16 >= 10.0 && avatars.get(i).getPosY() / 16 <= 12.0) { finished = true; winner = avatars.get(i).getName(); } } for (int i = 0; i < map.getTmap().getWidth(); i++) { g.drawString(String.valueOf(i), i * 16, 0 * 16); g.drawString(String.valueOf(i), i * 16, 29 * 16); } for (int j = 0; j < map.getTmap().getHeight(); j++) { g.drawString(String.valueOf(j), 0 * 16, j * 16); g.drawString(String.valueOf(j), 39 * 16, j * 16); } } else { map.setFinished(true); container.getGraphics().drawString("Game over in " + map.getSteps() + " steps!", 150, 50); g.drawString("Winner is " + winner + "!", 150, 60); } }
private static MinedCounter runStrategy( BlockMap blockMap, int mineLength, List<Vector> starts, int branchOffset, int branches) { MinedCounter mined = new MinedCounter(); for (Vector start : starts) { Miner miner = new Miner(blockMap.clone()); for (int x = 0; x < branches; x++) { Vector currentStart = new Vector(start.getX() + x * branchOffset, start.getY(), start.getZ()); miner.run(currentStart, new Point(0, 1), mineLength); } // System.out.println(String.format("Iteration %d", i + 1)); // System.out.println(miner.getMined()); mined.addAll(miner.getMined()); } mined.average(starts.size()); return mined; }
@Override public void render(GameContainer gc, StateBasedGame sbg, Graphics g) throws SlickException { g.drawImage(backgroundImage, 0, 0); // Render the map map.getTiledMap().render(0, 0, 1); // draw the character // g.drawAnimation(player.getAnimation(), player.getXPos(), player.getYPos()); // we should probably have a player.render method that takes gc, sbg, and g as args, then draws // the player // it would also call the weapon's render method g.drawImage(player.getSprite(), player.getXPos(), player.getYPos()); // draw the projectiles on screen for (Projectile shot : player.getProjectileList()) { g.draw(shot.projShape); } if (activeEnemyList != null) { for (Enemy enemy : activeEnemyList) { g.drawImage(enemy.getSprite(), enemy.getXPos(), enemy.getYPos()); } } }
public static void main(String[] args) throws Exception { File cacheFile = new File(CACHE_FILE); if (!cacheFile.exists()) { System.out.println("Building cache file"); buildCache(args[0]); } System.out.println("Loading cache file..."); BlockMap blockMap = BlockMap.load(cacheFile); final int iterations = 10; final int mineLength = 1000; List<Vector> starts = new ArrayList<>(); Map<Block, Table> tables = new HashMap<>(); for (int y = 9; y <= 13; y++) { System.out.println(); System.out.println("Depth: " + y); System.out.println(); for (int i = 0; i < iterations; i++) { starts.add( new Vector( blockMap.getOffset().getX() + 50 + RANDOM.nextInt(blockMap.getCx() - 100), y, blockMap.getOffset().getZ() + 50 + RANDOM.nextInt(blockMap.getCz() - 100 - mineLength))); } MinedCounter mined = runStrategy(blockMap, mineLength, starts, 0, 1); // System.out.println(mined); System.out.println( String.format( "Single branch: %s: %.1f, %s: %.1f", Blocks.DIAMOND_ORE.getName(), mined.get(Blocks.DIAMOND_ORE), Blocks.LAVA.getName(), mined.get(Blocks.LAVA))); for (MinedCounter.Entry entry : mined.entrySet()) { getTable(tables, entry).set(Integer.toString(y), "Single branch", entry.getValue()); } final int branches = 4; for (int branchDistance = 2; branchDistance <= 7; branchDistance++) { // System.out.println("Running strategy x+" + branchDistance + "+" + // branchDistance + " at " + y); mined = runStrategy(blockMap, mineLength, starts, branchDistance, branches); mined.average(branches); // System.out.println(mined); System.out.println( String.format( "Strategy x+%d: %s: %.1f, %s: %.1f", branchDistance, Blocks.DIAMOND_ORE.getName(), mined.get(Blocks.DIAMOND_ORE), Blocks.LAVA.getName(), mined.get(Blocks.LAVA))); for (MinedCounter.Entry entry : mined.entrySet()) { getTable(tables, entry) .set( Integer.toString(y), String.format("Strategy x+%d", branchDistance), entry.getValue()); } } } try (OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream("out.txt"))) { OutputWriter ow = new OutputWriter(writer); for (Map.Entry<Block, Table> entry : tables.entrySet()) { ow.write(entry.getKey().getName()); ow.nl(); entry.getValue().write(ow); ow.nl(); } } }
public void startContainer() throws SlickException { // ----------JADE start // Get a hold of JADE runtime Runtime runtime = Runtime.instance(); // Create a default profile ProfileImpl profile = new ProfileImpl(); // Create a new non-main container, connecting to the default // main container (i.e. on this host, port 1099) ContainerController cc = runtime.createMainContainer(profile); AgentController rma = null; AgentController player1 = null; AgentController player2 = null; AgentController player3 = null; AgentController player4 = null; ArrayList<AgentController> landmarks = new ArrayList<AgentController>(); Object[] arguments = new Object[3]; arguments[0] = this.map; arguments[1] = "team1-luffy"; arguments[2] = map.getAvatars().get(1); Object[] argumentsChief = new Object[3]; argumentsChief[0] = this.map; argumentsChief[1] = "team1-luffy"; argumentsChief[2] = map.getAvatars().get(0); Object[] arguments2 = new Object[3]; arguments2[0] = this.map; arguments2[1] = "team2-roronoa"; arguments2[2] = map.getAvatars().get(2); Object[] argumentsChief2 = new Object[3]; argumentsChief2[0] = this.map; argumentsChief2[1] = "team2-roronoa"; argumentsChief2[2] = map.getAvatars().get(3); try { rma = cc.createNewAgent("rma", "jade.tools.rma.rma", null); player1 = cc.createNewAgent( ((Avatar) arguments[2]).getName(), "agents.TickerExplorerRandomPlayer", arguments); player2 = cc.createNewAgent( ((Avatar) arguments2[2]).getName(), "agents.TickerExplorerRandomPlayer", arguments2); player3 = cc.createNewAgent( "Chiefteam1-luffy", "agents.TickerExplorerRandomPlayer", argumentsChief); player4 = cc.createNewAgent( "Chiefteam2-roronoa", "agents.TickerExplorerRandomPlayer", argumentsChief2); for (int i = 0; i < map.getLandmarks().size(); i++) { Object[] landmarkArgs = new Object[4]; landmarkArgs[0] = "Landmark" + i; landmarkArgs[1] = this.map; landmarkArgs[2] = map.getLandmarks().get(i); landmarkArgs[3] = map.getLandmarks().get(i).getMessage(); landmarks.add( cc.createNewAgent( map.getLandmarks().get(i).getName(), "agents.LandmarkAgent", landmarkArgs)); } System.out.println("Agent created \n"); } catch (StaleProxyException ex) { System.out.println("here is problem"); } try { // rma.start(); player1.start(); player2.start(); player3.start(); player4.start(); for (int i = 0; i < map.getLandmarks().size(); i++) { landmarks.get(i).start(); } System.out.println("Agent started \n"); } catch (StaleProxyException ex) { System.out.println("Stale Proxy pointer ex"); } catch (NullPointerException ex) { System.out.println("Null pointer ex"); ex.printStackTrace(); } // //----------JADE end }
@Override public void update(ParticleSystem system, int delta) { int cx = (int) cameraSystem.getOffsetX(); int cy = (int) cameraSystem.getOffsetY(); timer -= delta; if (timer <= 0) { timer = interval; int rowLowerBound = Math.max(0, (cy > 0 ? 0 : Math.abs(cy / blockMap.getBlockDepth()) - 1) - 5); int rowUpperBound = Math.min( blockMap.getDepth(), Math.abs(cy / blockMap.getBlockDepth()) + 1 + container.getHeight() / blockMap.getBlockDepth() + 1 + blockMap.getHeight() + 5); int columnLowerBound = Math.max(0, (cx > 0 ? 0 : Math.abs(cx / blockMap.getBlockWidth()) - 2) - 5); int columnUpperBound = Math.min( blockMap.getWidth(), Math.abs(cx / blockMap.getBlockWidth()) + 1 + container.getWidth() / blockMap.getBlockWidth() + 2 + 5); int sy = rowLowerBound + (int) (Math.random() * (rowUpperBound - rowLowerBound - 1)); int sx = columnLowerBound + (int) (Math.random() * (columnUpperBound - columnLowerBound - 1)); boolean foundTree = false; for (int j = sy; !foundTree && j < rowUpperBound; ++j) { for (int i = sx; !foundTree && i < columnUpperBound; ++i) { if (blockMap.dataPackage.trees[i][j] > 0) { foundTree = true; Particle p = system.getNewParticle(this, 3000); p.setImage( AssetManager.getInstance() .getImage( "tree-particle-" + Integer.toString((int) ((float) Math.random() * 100) % 3 + 1))); double r = Math.random(); p.setColor(1, 1, 1, 0); p.setSize(50); p.setVelocity( (float) Math.cos(r * (float) Math.PI / 4.0f), (float) Math.sin(r * (float) Math.PI / 4.0f), 0.3f); p.setOriented(true); r = (float) Math.random() * 300.0f; float a = (float) (Math.random() * 2.0 * Math.PI); int height = Math.max( 1, (int) (blockMap.dataPackage.heightMap[j][i] * blockMap.dataPackage.getHeight())); p.setPosition( i * blockMap.getBlockWidth() - 30, j * blockMap.getBlockDepth() - (blockMap.getTowerHeight(i, j) + 1) * blockMap.getBlockHeight()); } } } } }