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:
[code]
import time, sys, random
from pyansi import *

hidecur()  # Hiding cursor
clrscr()
title("Game")

colorlist = [
    Red,
    Blue,
    Green,
    Yellow,
    Gray,
    LightGreen,
    LightRed,
]


def drawbox():  # generate random objects
    x, y, xpos, ypos = [], [], [], []
    a, b, c, d = 1, 1, 1, 1

    while a <= 55:
        gotoxy(a, 1)
        puts("═")
        a += 1

    while b <= 55:
        gotoxy(b, 25)
        puts("═")
        b += 1

    while c <= 25:
        gotoxy(1, c)
        puts("║")
        c += 1

    while d <= 25:
        gotoxy(55, d)
        puts("║")
        d += 1

    gotoxy(55, 1)
    puts("╗")
    gotoxy(55, 25)
    puts("╝")
    gotoxy(1, 1)
    puts("╔")
    gotoxy(1, 25)
    puts("╚")

    for xi in range(2, 54):
        x.append(xi)
        for yi in range(2, 24):
            y.append(yi)
            random.seed(time.time())
            epochext = time.time()

            xrand = random.choice(x)
            yrand = random.choice(y)

            gotoxy(xrand, yrand)
            textcolor(random.choice(colorlist))
            puts("×")

            yield xrand, yrand


def charc():
    puts("*")
    resetvideo()


def gameover():
    clrscr()
    resetvideo()
    puts(BEL)
    print("Don't touch the walls!")
    sys.exit()


def coord_dump():
    while 1:  # Dumping random objects coordinates.
        fl = open("posfl.log", 'w')
        apos = drawbox()

        for d in apos:
            fl.write(str(d))

        fl.close()
        break


def main():
    x = 27
    y = 12
    punt = 0

    coord_dump()
    while 1:
        textcolor(LightRed)
        gotoxy(x, y)
        puts("█")

        key = getch()
        gotoxy(x, y)
        puts(" ")  # Cleans gotoxy footprint

        if key == "w":
            y -= 1

        elif key == "a":
            x -= 1

        elif key == "s":
            y += 1

        elif key == "d":
            x += 1

        elif key == "r":
            clrscr()
            resetvideo()
            coord_dump()

        elif key == "x":
            showcur()
            resetvideo()
            clrscr()
            sys.exit("")

        if x >= 55 or x <= 1 or y <= 1 or y >= 25 or x == 1:
            gameover()

        """
        if x > 55:
            x = 0
            y += 1
            gotoxy(x, y)
         """

        textcolor(LightWhite)
        gotoxy(0, 26)
        puts("X:%s Y:%s" % (x, y))
        gotoxy(0, 27)
        puts("Use WASD to move, r to regenerate, and x for exit.", "konniskatt 2018")


main()
[/code]
Genial! Wink