Advertisement
rainman002

Generates "God" Word Search

Sep 10th, 2013
259
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.32 KB | None | 0 0
  1. package wordsearch;
  2.  
  3. import java.io.IOException;
  4.  
  5. public class FindGod
  6. {
  7.  
  8.     public static void main(String[] args) throws IOException
  9.     {
  10.         int w = 40;
  11.         int h = 30;
  12.        
  13.         int[][] grid = new int[w][h];
  14.         int[] dx = {1,1,0,-1,-1,-1,0,1};
  15.         int[] dy = {0,-1,-1,-1,0,1,1,1};
  16.         char[] charset = {'G','O','D'};
  17.  
  18.         for(int y=0 ; y<h ; y++)
  19.             for(int x=0 ; x<w ; x++)
  20.                 grid[x][y] = 1;
  21.  
  22.         int solX = (int)(Math.random()*(w-8)+4);
  23.         int solY = (int)(Math.random()*(h-8)+4);
  24.         int solD = (int)(Math.random()*8);
  25.  
  26.         for(int j=0 ; j<3 ; j++)
  27.             grid[solX+j*dx[solD]][solY+j*dy[solD]] = j;
  28.        
  29.         for(int i=0 ; i<w*h*4 ; i++)
  30.         {
  31.             int x = (int)(Math.random()*(w-4)+2);
  32.             int y = (int)(Math.random()*(h-4)+2);
  33.             int c = (int)(Math.random()*3);
  34.             boolean fit = true;
  35.             for(int d=0 ; d<8 ; d++)
  36.                 if((2-c == grid[x+2*dx[d]][y+2*dy[d]] && grid[x+dx[d]][y+dy[d]] == 1)
  37.                 || (c == 1 && 2-grid[x-dx[d]][y-dy[d]] == grid[x+dx[d]][y+dy[d]]) )
  38.                     fit = false;
  39.             for(int j=0 ; j<3 ; j++)
  40.                 if(x == solX+j*dx[solD] && y==solY+j*dy[solD])
  41.                     fit = false;
  42.             if(fit)
  43.                 grid[x][y] = c;
  44.         }
  45.         for(int y=2 ; y<h-2 ; y++)
  46.         {
  47.             for(int x=2 ; x<w-2 ; x++)
  48.                 System.out.print(" "+charset[grid[x][y]]);
  49.             System.out.println();
  50.         }
  51.         System.in.read();
  52.         System.out.println((solX-1)+","+(solY-1)+","+solD);
  53.     }
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement