Foros Python

Versión completa: Simple juego con librería pyANSI
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Les mostrare un (muy) simple juego que hice usando mi librería pyANSI.
Se trata se mover un @ por la pantalla, usando las teclas wasd para moverse respectivamente, también genera aleatoriamente objectos en la pantalla usando random y el tiempo epoch del PC como seed.
Es muy simple ya que no detecta cuando el @ choca con unos de esos objectos, es algo complejo hacer eso. Pero estoy seguro que podrán hacer algo mejor.


Código:
  1. import time, sys, random
  2. from pyansi import *
  3.  
  4. hidecur() ; ;# Hiding cursor
  5. clrscr()
  6. title("Game")
  7.  
  8. colorlist = [
  9.  ; ; ; ;Red,
  10.  ; ; ; ;Blue,
  11.  ; ; ; ;Green,
  12.  ; ; ; ;Yellow,
  13.  ; ; ; ;Gray,
  14.  ; ; ; ;LightGreen,
  15.  ; ; ; ;LightRed,
  16. ]
  17.  
  18.  
  19. def drawbox(); ;# generate random objects
  20.  ; ; ; ;x, y, xpos, ypos = [], [], [], []
  21.  ; ; ; ;a, b, c, d = 1, 1, 1, 1
  22.  
  23.  ; ; ; ;while a <= 55:
  24.  ; ; ; ; ; ; ; ;gotoxy(a, 1)
  25.  ; ; ; ; ; ; ; ;puts("═")
  26.  ; ; ; ; ; ; ; ;a += 1
  27.  
  28.  ; ; ; ;while b <= 55:
  29.  ; ; ; ; ; ; ; ;gotoxy(b, 25)
  30.  ; ; ; ; ; ; ; ;puts("═")
  31.  ; ; ; ; ; ; ; ;b += 1
  32.  
  33.  ; ; ; ;while c <= 25:
  34.  ; ; ; ; ; ; ; ;gotoxy(1, c)
  35.  ; ; ; ; ; ; ; ;puts("║")
  36.  ; ; ; ; ; ; ; ;c += 1
  37.  
  38.  ; ; ; ;while d <= 25:
  39.  ; ; ; ; ; ; ; ;gotoxy(55, d)
  40.  ; ; ; ; ; ; ; ;puts("║")
  41.  ; ; ; ; ; ; ; ;d += 1
  42.  
  43.  ; ; ; ;gotoxy(55, 1)
  44.  ; ; ; ;puts("╗")
  45.  ; ; ; ;gotoxy(55, 25)
  46.  ; ; ; ;puts("╝")
  47.  ; ; ; ;gotoxy(1, 1)
  48.  ; ; ; ;puts("╔")
  49.  ; ; ; ;gotoxy(1, 25)
  50.  ; ; ; ;puts("╚")
  51.  
  52.  ; ; ; ;for xi in range(2, 54):
  53.  ; ; ; ; ; ; ; ;x.append(xi)
  54.  ; ; ; ; ; ; ; ;for yi in range(2, 24):
  55.  ; ; ; ; ; ; ; ; ; ; ; ;y.append(yi)
  56.  ; ; ; ; ; ; ; ; ; ; ; ;random.seed(time.time())
  57.  ; ; ; ; ; ; ; ; ; ; ; ;epochext = time.time()
  58.  
  59.  ; ; ; ; ; ; ; ; ; ; ; ;xrand = random.choice(x)
  60.  ; ; ; ; ; ; ; ; ; ; ; ;yrand = random.choice(y)
  61.  
  62.  ; ; ; ; ; ; ; ; ; ; ; ;gotoxy(xrand, yrand)
  63.  ; ; ; ; ; ; ; ; ; ; ; ;textcolor(random.choice(colorlist))
  64.  ; ; ; ; ; ; ; ; ; ; ; ;puts("×")
  65.  
  66.  ; ; ; ; ; ; ; ; ; ; ; ;yield xrand, yrand
  67.  
  68.  
  69. def charc():
  70.  ; ; ; ;puts("*")
  71.  ; ; ; ;resetvideo()
  72.  
  73.  
  74. def gameover():
  75.  ; ; ; ;clrscr()
  76.  ; ; ; ;resetvideo()
  77.  ; ; ; ;puts(BEL)
  78.  ; ; ; ;print("Don't touch the walls!")
  79.  ; ; ; ;sys.exit()
  80.  
  81.  
  82. def coord_dump():
  83.  ; ; ; ;while 1; ;# Dumping random objects coordinates.
  84.  ; ; ; ; ; ; ; ;fl = open("posfl.log", 'w')
  85.  ; ; ; ; ; ; ; ;apos = drawbox()
  86.  
  87.  ; ; ; ; ; ; ; ;for d in apos:
  88.  ; ; ; ; ; ; ; ; ; ; ; ;fl.write(str(d))
  89.  
  90.  ; ; ; ; ; ; ; ;fl.close()
  91.  ; ; ; ; ; ; ; ;break
  92.  
  93.  
  94. def main():
  95.  ; ; ; ;x = 27
  96.  ; ; ; ;y = 12
  97.  ; ; ; ;punt = 0
  98.  
  99.  ; ; ; ;coord_dump()
  100.  ; ; ; ;while 1:
  101.  ; ; ; ; ; ; ; ;textcolor(LightRed)
  102.  ; ; ; ; ; ; ; ;gotoxy(x, y)
  103.  ; ; ; ; ; ; ; ;puts("█")
  104.  
  105.  ; ; ; ; ; ; ; ;key = getch()
  106.  ; ; ; ; ; ; ; ;gotoxy(x, y)
  107.  ; ; ; ; ; ; ; ;puts(" ") ; ;# Cleans gotoxy footprint
  108.  
  109.  ; ; ; ; ; ; ; ;if key == "w":
  110.  ; ; ; ; ; ; ; ; ; ; ; ;y -= 1
  111.  
  112.  ; ; ; ; ; ; ; ;elif key == "a":
  113.  ; ; ; ; ; ; ; ; ; ; ; ;x -= 1
  114.  
  115.  ; ; ; ; ; ; ; ;elif key == "s":
  116.  ; ; ; ; ; ; ; ; ; ; ; ;y += 1
  117.  
  118.  ; ; ; ; ; ; ; ;elif key == "d":
  119.  ; ; ; ; ; ; ; ; ; ; ; ;x += 1
  120.  
  121.  ; ; ; ; ; ; ; ;elif key == "r":
  122.  ; ; ; ; ; ; ; ; ; ; ; ;clrscr()
  123.  ; ; ; ; ; ; ; ; ; ; ; ;resetvideo()
  124.  ; ; ; ; ; ; ; ; ; ; ; ;coord_dump()
  125.  
  126.  ; ; ; ; ; ; ; ;elif key == "x":
  127.  ; ; ; ; ; ; ; ; ; ; ; ;showcur()
  128.  ; ; ; ; ; ; ; ; ; ; ; ;resetvideo()
  129.  ; ; ; ; ; ; ; ; ; ; ; ;clrscr()
  130.  ; ; ; ; ; ; ; ; ; ; ; ;sys.exit("")
  131.  
  132.  ; ; ; ; ; ; ; ;if x >= 55 or x <= 1 or y <= 1 or y >= 25 or x == 1:
  133.  ; ; ; ; ; ; ; ; ; ; ; ;gameover()
  134.  
  135.  ; ; ; ; ; ; ; ;"""
  136.         if x > 55:
  137.             x = 0
  138.             y += 1
  139.             gotoxy(x, y)
  140.          """
  141.  
  142.  ; ; ; ; ; ; ; ;textcolor(LightWhite)
  143.  ; ; ; ; ; ; ; ;gotoxy(0, 26)
  144.  ; ; ; ; ; ; ; ;puts("X:%s Y:%s" % (x, y))
  145.  ; ; ; ; ; ; ; ;gotoxy(0, 27)
  146.  ; ; ; ; ; ; ; ;puts("Use WASD to move, r to regenerate, and x for exit.", "konniskatt 2018")
  147.  
  148.  
  149. main()
Genial! Wink