Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 19 additions & 12 deletions src/kata1/rps.py
Original file line number Diff line number Diff line change
@@ -1,23 +1,30 @@
from random import randint

TIE = 'Empate!'
WIN = 'Ganaste!'
LOSE = 'Perdiste!'

options = ["Piedra", "Papel", "Tijeras"]

# El resultado de salida son las siguientes String
#'Empate!'
#'Ganaste!'
#'Perdiste!'
player_option = {
'Piedra' : {'Piedra': TIE, 'Papel': LOSE, 'Tijeras': WIN},
'Papel': {'Piedra': WIN, 'Papel': TIE, 'Tijeras': LOSE},
'Tijeras': {'Piedra': LOSE, 'Papel': WIN, 'Tijeras': TIE},
}

def quienGana(player, ai):
return ""
player = player.capitalize()
ai = ai.capitalize()

return player_option[player][ai]

# Entry Point
def Game():
#
#
#
#
player = input('Introduce Piedra, Papel o Tijeras: ')
ai = options[randint(0,2)]

print ('Elejiste ' + player)
print ('AI elijio ' + ai)

winner = quienGana(player, ai)

print(winner)

12 changes: 6 additions & 6 deletions src/kata2/rpg.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@
import string

def RandomPasswordGenerator(passLen=10):
#
#

#
#
allowedChars = string.ascii_lowercase
generatedSequence = []

return ""
for i in range(passLen):
generatedSequence.append(random.choice(allowedChars))

return ''.join(generatedSequence)
51 changes: 27 additions & 24 deletions src/kata3/bot.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,55 +2,58 @@

from telegram.ext import Updater, CommandHandler, MessageHandler, Filters

# Activar logging
logging.basicConfig(format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
level=logging.INFO)

logger = logging.getLogger(__name__)


# Definimos algunas funciones para los comandos. Estos generalmente toman los dos argumentos update y context
def start(update, context):
"""Envia un mensaje cuando se emita el comando /start."""
return ""
message = 'Hola, Geeks!'
update.message.reply_text(message)

return message

def help(update, context):
"""Envia un mensaje cuando se emita el comando /help."""
return ""
message = 'Ayudame!'
update.message.reply_text(message)

return message

def mayus(update, context):
#
return ""
result = [x.upper() for x in context.args]
result = ''.join(result)
update.message.reply_text(result)

return result

def alreves(update, context):
"""Repite el mensaje del usuario."""
#
return ""
result = update.message.text[::-1]
update.message.reply_text(result)

return result

def error(update, context):
"""Envia los errores por consola"""
logger.warning('Update "%s" caused error "%s"', update, context.error)

def main():
"""Inicio del Bot"""
#Colocamos el Token creado por FatherBot
updater = Updater("", use_context=True)

# Es el Registro de Comandos a través del dispartcher
dp = #
updater = Updater(
token=open("./bot_token").read(),
use_context=True
)

dp = updater.dispatcher

# Añadimos a la lista de Registro todos los comandos con su función [start - help - mayus]
#
#
#
dp.add_handler(CommandHandler('start', start))
dp.add_handler(CommandHandler('help', help))
dp.add_handler(CommandHandler('mayus', mayus))

# Este comando es un Trigger que se lanza cuando no hay comandos [alreves]
#
dp.add_handler(MessageHandler(Filters.text, alreves))

# Y este espera al error
dp.add_error_handler(error)

# Lanzamos el Bot
updater.start_polling()

updater.idle()
Expand Down
1 change: 1 addition & 0 deletions src/kata3/bot_token.sample
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
123456789:ABCdeFghij1k2L3MnOPQr45S_TU6vwXY6Z7
109 changes: 50 additions & 59 deletions src/kata4/snake.py
Original file line number Diff line number Diff line change
@@ -1,42 +1,44 @@
import pygame, sys, time, random
from pygame.locals import *

#pygame.init()
#play_surface = pygame.display.set_mode((500, 500))
#fps = pygame.time.Clock()

class Snake():
position = [100,50]
body = [[100,50], [90,50],[80,50]]
direction = "RIGHT"
change = direction

# Manejo del pressed [KEYDOWN] de las teclas [K_RIGHT - K_LEFT - K_UP -K_DOWN ]
speed = 10

VALID_DIRECTIONS = {
'RIGHT': ['UP', 'DOWN'],
'LEFT': ['UP', 'DOWN'],
'UP': ['RIGHT', 'LEFT'],
'DOWN': ['RIGHT', 'LEFT'],
}

def controller(self, event, pygame):
movement_key_map = {
pygame.K_RIGHT: 'RIGHT',
pygame.K_LEFT: 'LEFT',
pygame.K_UP: 'UP',
pygame.K_DOWN: 'DOWN',
}

if event.type == pygame.KEYDOWN:
if event.key in movement_key_map:
self.change = movement_key_map[event.key]

# Controla el cambio de las direcciones
# Orientaciones
# Vertical -> Movimientos [RIGHT - LEFT]
# Horizontal -> Movimientos [UP - DOWN]
# Incremento del movimiento
def changeDirection(self):
#
#
#
#
#
#
#
#

#
#
#
#
#
#
#
#
if self.change in self.VALID_DIRECTIONS[self.direction]:
self.direction = self.change

if self.direction == 'RIGHT':
self.position[0] += self.speed
if self.direction == 'LEFT':
self.position[0] -= self.speed
if self.direction == 'UP':
self.position[1] -= self.speed
if self.direction == 'DOWN':
self.position[1] += self.speed

self.body.insert(0, list(self.position))

Expand All @@ -50,52 +52,42 @@ def __init__(self):

# función de salida
def exit(self, event, pygame):
pass
#
#

# Posición aleatorio entre el ranto [0,49] * 10
def food_spawn(self):
self.food_pos = 0
def food_spawn(self):
new_x = random.choice(range(0, 49)) * 10
new_y = random.choice(range(0, 49)) * 10

self.food_pos = [new_x, new_y]

# Si colisionas con una fruta, sumas 1
# Sino decrementas en 1 el body del snake
def eat(self, snake):
#
#
#
#
#

# Mensajes de salida cuando el snake muere
# Posición snake[0] >= 500 ó snake[0] <= 0 -> Muere
# Posición snake[1] >= 500 ó snake[1] <= 0 -> Muere
# Posición del snake choca con sigo mismo menos la cabeza -> Muere
def dead(self, snake):
#
#
#
if snake.position == self.food_pos:
self.food_spawn()
self.score += 1
else:
snake.body.pop()

#
#
#

#
#
#


# Entry Point
def dead(self, snake):
is_in_playground = 0 < snake.position[0] < 500 and 0 < snake.position[1] < 500
is_self_collision = snake.position in snake.body[2:]
if not is_in_playground or is_self_collision:
Game.run = False
else:
Game.run = True

def main():
# Descomentar para lanzar el juego en local
# Comentar para validar con el oráculo
# pygame.init()
# play_surface = pygame.display.set_mode((500, 500))
# fps = pygame.time.Clock()


snake = Snake()
game = Game()

# Bucle principal
while game.run:
for event in pygame.event.get():
game.exit(event, pygame)
Expand All @@ -105,7 +97,6 @@ def main():

game.eat(snake)

# Dibujar Snake
play_surface.fill((0,0,0))
for pos in snake.body:
pygame.draw.rect(play_surface, (200,200,200), pygame.Rect(pos[0], pos[1], 10, 10))
Expand Down