I am trying to make a survival game and I have a problem with perlin noise. My program gives me this:
But I want something like islands or rivers.
Here's my code:
#SetUp#
import pygame, sys, random
pygame.init()
win = pygame.display.set_mode((800, 600))
pygame.display.set_caption('Isom')
x = 0
y = 0
s = 0
tilel = list()
random.seed(5843)
MAP = [random.randint(0, 1) for _ in range(192)]#Tiles#
class tile():grass = pygame.image.load('Sprites/Images/Grass.png')water = pygame.image.load('Sprites/Images/Water.png')#Loop#
while True:for key in pygame.event.get():if key.type == pygame.QUIT:pygame.quit()sys.exit()#World#for a in range(12):for b in range(16):if MAP[s] == 0:win.blit((tile.grass), (x, y))elif MAP[s] == 1:win.blit((tile.water), (x, y))x += 50s += 1x = 0y += 50x = 0y = 0s = 0#Update#pygame.display.update()
image of randomly genrated terrain
code for perlin noise in pygame:
from PIL import Imageimport numpy as npfrom perlin_noise import PerlinNoiseimport randomimport pygamepygame.init()noise = PerlinNoise(octaves=6, seed=random.randint(0, 100000))xpix, ypix = 500, 500pic = [[noise([i/xpix, j/ypix]) for j in range(xpix)] for i in range(ypix)]screen = pygame.display.set_mode ((500, 500), pygame.RESIZABLE)while True:for event in pygame.event.get():if event.type == pygame.QUIT:pygame.quit()run = Falsefor i, row in enumerate(pic):for j, column in enumerate(row):if column>=0.6:pygame.draw.rect(screen, (250, 250, 250), pygame.Rect(j, i, 1, 1))elif column>=0.2:pygame.draw.rect(screen, (80, 80, 80), pygame.Rect(j, i, 1, 1)) elif column>=0.09:pygame.draw.rect(screen, (30, 90, 30), pygame.Rect(j, i, 1, 1))elif column >=0.009:pygame.draw.rect(screen, (10, 100, 10), pygame.Rect(j, i, 1, 1))elif column >=0.002:pygame.draw.rect(screen, (100, 150, 0), pygame.Rect(j, i, 1, 1))elif column >=-0.06:pygame.draw.rect(screen, (30, 190, 0), pygame.Rect(j, i, 1, 1))elif column >=-0.02:pygame.draw.rect(screen, (40, 200, 0), pygame.Rect(j, i, 1, 1))elif column >=-0.1:pygame.draw.rect(screen, (10, 210, 0), pygame.Rect(j, i, 1, 1))elif column >=-0.8:pygame.draw.rect(screen, (0, 0, 200), pygame.Rect(j, i, 1, 1))#------------#run the game classpygame.display.update()pygame.quit()quit()