Advertisement
Guest User

Untitled

a guest
Mar 8th, 2014
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.19 KB | None | 0 0
  1. import java.util.Random;
  2.  
  3.  
  4. public class LayoutPopulator {
  5.  
  6. public enum TileTypes{
  7. Ground('#'), Water('~'), House('H'), Boat('U');
  8.  
  9. public final char icon;
  10.  
  11. TileTypes(char icon){
  12. this.icon = icon;
  13. }
  14.  
  15.  
  16. }
  17.  
  18. private Layout layout;
  19. private Random rand = new Random();
  20.  
  21. LayoutPopulator(Layout layout){
  22. this.layout = layout;
  23. pWater(layout);
  24. }
  25.  
  26. private void pWater(Layout layout){
  27. for(int i = 0; i < layout.getLayout().length; i++){
  28. int randInt = rand.nextInt(101);
  29. if(randInt == 0){
  30. if(!(i - 1 < 0 || i % layout.getX() == 0 || (i + 1) % layout.getX() == 0 || i + layout.getX() > layout.getLayout().length)){ //Prevents lake's source tile from spawning on an edge
  31. layout.getLayout()[i] = TileTypes.Water.icon;
  32. if(i + layout.getX() < layout.getLayout().length + 1){
  33. layout.getLayout()[i + layout.getX()] = TileTypes.Water.icon;
  34. layout.getLayout()[i + layout.getX() + 1] = TileTypes.Water.icon;
  35. layout.getLayout()[i + layout.getX() - 1] = TileTypes.Water.icon;
  36. if((i + layout.getX()) + layout.getX() < layout.getLayout().length + 1){
  37. layout.getLayout()[(i + layout.getX()) + layout.getX()] = TileTypes.Water.icon;
  38. }
  39. randInt = rand.nextInt(101);
  40. if(randInt < 40){
  41. layout.getLayout()[i - 1] = TileTypes.Water.icon;
  42. }
  43. if(i - layout.getX() > 0){
  44. layout.getLayout()[i - layout.getX()] = TileTypes.Water.icon;
  45. layout.getLayout()[i - layout.getX() + 1] = TileTypes.Water.icon;
  46. layout.getLayout()[i - layout.getX() - 1] = TileTypes.Water.icon;
  47. if((i - layout.getX()) - layout.getX() > 0){
  48. layout.getLayout()[(i - layout.getX()) - layout.getX()] = TileTypes.Water.icon;
  49. }
  50. }
  51. }
  52. }
  53. }
  54. }
  55. layout.stringRep(layout.getLayout());
  56. pGround(layout);
  57. }
  58.  
  59. private void pGround(Layout layout){
  60. for(int i = 0; i < layout.getLayout().length; i++){
  61. if(layout.getLayout()[i] != TileTypes.Water.icon){
  62. layout.getLayout()[i] = TileTypes.Ground.icon;
  63. }
  64. }
  65. layout.stringRep(layout.getLayout());
  66. pHouse(layout);
  67. }
  68.  
  69. private void pHouse(Layout layout){
  70. for(int i = 0; i < layout.getLayout().length; i++){
  71. int randInt = rand.nextInt(101);
  72. if(layout.getLayout()[i] == TileTypes.Ground.icon && randInt <= 2){
  73. layout.getLayout()[i] = TileTypes.House.icon;
  74. }
  75. }
  76. layout.stringRep(layout.getLayout());
  77. pBoat(layout);
  78. }
  79.  
  80. private void pBoat(Layout layout){
  81. for(int i = 0; i < layout.getLayout().length; i++){
  82. if(layout.getLayout()[i] == TileTypes.Water.icon){
  83. if(i - 1 > 0 && i % layout.getX() != 0 && i + 1 < layout.getLayout().length && (i + 1) % layout.getX() != 0){
  84. if(layout.getLayout()[i + 1] == TileTypes.House.icon || layout.getLayout()[i - 1] == TileTypes.House.icon){
  85. layout.getLayout()[i] = TileTypes.Boat.icon;
  86. }
  87. }
  88. if(i - layout.getX() > 0 && i + layout.getX() < layout.getLayout().length){
  89. if(layout.getLayout()[i - layout.getX()] == TileTypes.House.icon || layout.getLayout()[i + layout.getX()] == TileTypes.House.icon){
  90. layout.getLayout()[i] = TileTypes.Boat.icon;
  91. }
  92. }
  93. }
  94. }
  95. layout.stringRep(layout.getLayout());
  96. }
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement