Compare commits

...

2 Commits

Author SHA1 Message Date
Suguivy fa76489ed4 testing/ folder 2023-03-20 18:50:40 +01:00
Suguivy f5b7d0f5e1 ideas.md 2023-03-13 20:00:32 +01:00
3 changed files with 132 additions and 1 deletions

1
.gitignore vendored
View File

@ -1,3 +1,2 @@
*.log
ideas.md
__pycache__/

36
ideas.md Normal file
View File

@ -0,0 +1,36 @@
# Personaje
No hay clases, pero puedes elegir con que arma empiezas. No hay ningún sistema de stats ni de experiencia y la unica forma de mejorar es con mejores objetos, o mejorando los que tienes.
# Items
Drops de enemigos.
Cofres que necesitan llaves (o no). O mimics que dropeen items.
Que te los den los munchers.
# Dungeon
La dungeon se genera aleatoriamente, junto con los objetos, enemigos, escaleras, etc. Los enemigos podrán spawnear aleatoriamente en el piso de vez en cuando aunque ya hayas matado todos.
Que haya diferentes regiones:
- Desierto
- Cuevas
- Selva
- Mazmorras
- Ciudad abandonada
Se vuelve menos salvaje cuanto más abajo.
# Magia
Que haya piedras mágicas. Estas piedras te permiten hacer hechizos.
Como se consigues las piedras:
- Al menos una aparece aleatoriamente como loot/oculta/con una llave, etc.
- Vencer a un boss/bicho básico bufado ambientado en esa piedra, que al matarlo te la da.
- Piedras especiales más ligadas a la mazmorra, que coges y modifican gameplay (aparecen enemigos más fuertes/un aire tóxico que quita vida/muerte de enter the gungeon, etc), y te dan un efecto pasivo.
Hacer un set de piedras que tengas efectos. No es obligatorio recogerlas.
## Altares:
- Un altar que le tiras un objeto, lo pierdes y te da algún efecto pasivo.
- Un muncher.
# Otras ideas
Metaprogresion:
- Piedras que puedas desbloquear
- Nuevos items iniciales
Logros

View File

@ -0,0 +1,96 @@
import random
def generate(width, height, edgeRows, edgeCols, seed=None):
grid = []
for row in range(height):
grid.append([])
for tile in range(width):
grid[row].append('#')
#grid = [['#'] * width] * height
edges = set()
for i in range(edgeCols):
for j in range(edgeRows):
x = i * (width // edgeCols)
y = j * (height // edgeRows)
edges.add((x,y))
not_connected = set(edges)
connected = set()
connected.add(next(iter(not_connected)))
while len(not_connected) > 0:
(dx, dy) = not_connected.pop()
(ox, oy) = next(iter(connected))
connected.add((dx, dy))
directions = ['N', 'S', 'W', 'E']
direction = random.choice(directions)
valid_direction = False
while not valid_direction:
direction = random.choice(directions)
if direction == 'N':
valid_direction = oy >= dy
if direction == 'S':
valid_direction = oy <= dy
if direction == 'W':
valid_direction = ox >= dx
if direction == 'E':
valid_direction = ox <= dx
if direction == 'N':
for y in range(dy, oy+1):
grid[y][ox] = '.'
(minX, maxX) = (ox, dx) if ox < dx else (dx, ox)
for x in range(minX, maxX):
grid[dy][x] = '.'
if direction == 'S':
for y in range(oy, dy+1):
grid[y][ox] = '.'
(minX, maxX) = (ox, dx) if ox < dx else (dx, ox)
for x in range(minX, maxX):
grid[dy][x] = '.'
if direction == 'W':
for x in range(dx, ox+1):
grid[oy][x] = '.'
(minY, maxY) = (oy, dy) if oy < dy else (dy, oy)
for y in range(minY, maxY):
grid[y][dx] = '.'
if direction == 'E':
for x in range(ox, dx+1):
grid[oy][x] = '.'
(minY, maxY) = (oy, dy) if oy < dy else (dy, oy)
for y in range(minY, maxY):
grid[y][dx] = '.'
for (x, y) in edges:
grid[y][x] = '.'
for row in grid:
for tile in row:
print(tile, end='')
print()
generate(80, 20, 6, 8)
"""
Generate points at random positions
Pick point X and another random point without connections.
"""
"""
################################################################
################################################################
#############################......#############################
###########################...####.#############################
#################################....#####......################
##############################..#.##...##.......################
###############################...####....#.....################
################################################################
################################################################
################################################################
################################################################
"""