Pensando en cambio

Ahora mismo estoy mirando como es VB quizá deje el python solo por cuestión de que, realmente no lo voy a usar, y en clase no creo que den más de lo que he echo ya, así que, como la segunda evaluación o la tercera es VB pues voy a empezar ahora.

Ya veremos.

Mejorando

Hoy en clase hice una pequeña animación para el movimiento de los personajes ahora ya puede “saltar” y he cambiado el sprite de mario por el de Naruto

Gracias a diestro por la ayuda y ideas prestadas.

Posiciones:

self.up = os.path.join(“imagenes”,”ad.png”)
self.up1 = os.path.join(“imagenes”,”ad1.png”)
self.up2 = os.path.join(“imagenes”,”ai.png”)
self.up3 = os.path.join(“imagenes”,”ai1.png”)
self.down = os.path.join(“imagenes”,”bd.png”)
self.down1 = os.path.join(“imagenes”,”bd1.png”)
self.down2 = os.path.join(“imagenes”,”bi.png”)
self.down3 = os.path.join(“imagenes”,”bi1.png”)
self.right = os.path.join(“imagenes”,”d.png”)
self.right1 = os.path.join(“imagenes”,”d1.png”)
self.left = os.path.join(“imagenes”,”i.png”)
self.left1 = os.path.join(“imagenes”,”i1.png”)

Y movimientos:

for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
elif event.type == pygame.KEYDOWN:

if event.key == pygame.K_LEFT:
if objeto.solid == 1:
pass
else:
if char.pos == char.left:
char.pos = char.left1
else:
char.pos = char.left
char.posX = char.posX – 10
elif event.key == pygame.K_RIGHT:
if objeto.solid == 1:
pass
else:
if char.pos == char.right:
char.pos = char.right1

else:
char.pos = char.right
char.posX = char.posX + 10
elif event.key == pygame.K_UP:
if char.pos == char.down:
char.pos = char.down1
else:
char.pos = char.down
char.posY = char.posY – 10
elif event.key == pygame.K_DOWN:
if char.pos == char.up:
char.pos = char.up1
else:
char.pos = char.up
char.posY = char.posY + 10
elif event.key == pygame.K_SPACE and event.key == pygame.K_RIGHT:
for s in range(0,5):
char.posY= char.posY – 5
SCREEN.blit(pygame.image.load(char.pos), (char.posX,char.posY))
pygame.display.update()
for q in range(0,5):
char.posY= char.posY + 5
SCREEN.blit(pygame.image.load(char.pos), (char.posX,char.posY))
pygame.display.update()

De nuevo mario desde 0

Volví a empezar el mario, pero esta vez usando clases y funciones.

El porqué es simple.. es más facil de usar, no gasto tanto espacio y encima me vendrá genial para cuando cree el mapa.

import sys, os, pygame
from sys import exit
SCREEN = pygame.display.set_mode((200, 40))
clock = pygame.time.Clock()
pygame.display.set_caption(“Mario en Movimiento”)

class Char:
def __init__(self):
self.posX = 0
self.posY = 0
self.up = os.path.join(“imagenes”,”arriba.bmp”)
self.down = os.path.join(“imagenes”,”abajo.bmp”)
self.right = os.path.join(“imagenes”,”derecha.bmp”)
self.left = os.path.join(“imagenes”,”izquierda.bmp”)
self.pos = self.right
def draw(self):
SCREEN.blit(pygame.image.load(char.pos), (char.posX,char.posY))
pygame.display.update()

char = Char()

while True:
clock.tick(60)
SCREEN.fill((255,255,255))
char.draw()

for event in pygame.event.get():
if event.type == pygame.QUIT:
exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
char.pos = char.left
char.posX = char.posX – 10
elif event.key == pygame.K_RIGHT:
char.pos = char.right
char.posX = char.posX + 10
elif event.key == pygame.K_UP:
char.pos = char.up
elif event.key == pygame.K_DOWN:
char.pos = char.down

Función de salto añadida

Por cierto he pasado el programa a 2D ahora se muestra la cara del mario y la espalda, ya no se usará Z como metodo de movimiento.

for event in pygame.event.get():
if event.type == QUIT:
sys.exit(0)  # SAL
if event.type == KEYDOWN:
if event.key == K_DOWN or event.key == K_s:
mov = “abajo”
#z = z+fps # z = z+ fps (frame x segundo)
if event.key == K_UP or event.key == K_w:
mov = “arriba”
#z = z-fps
if event.key == K_LEFT or event.key == K_a:
mov = “izquierda”
x = x-fps
if event.key == K_RIGHT or event.key == K_d:
mov = “derecha”
x = x+fps
if event.key == K_SPACE:
for s in range(0,3):
z=z-fps
pygame.display.flip()
screen.blit(cimagen, (x,z))
pygame.time.wait(100)
for q in range(0,3):
z=z+fps
pygame.display.flip()
screen.blit(cimagen, (x,z))

Mario!

Aqui el principio de mi próxima creación, la he basado en pygames, no la explicaré ya que es algo larga pero si alguien tiene dudas o algo, que deje un comentario y yo responderé sin problemas.

import sys, os, pygame, random
from pygame.locals import *

nom = “Mario en movimiento”
res = 200,80
fps = 10
x = 0
z = res[1]-33

mov = “derecha”
arriba = os.path.join(“imagenes”,”arriba.bmp”)
abajo = os.path.join(“imagenes”,”abajo.bmp”)
derecha = os.path.join(“imagenes”,”derecha.bmp”)
izquierda = os.path.join(“imagenes”,”izquierda.bmp”)

def main():

pygame.init()
Ventana = pygame.display.set_mode((res))
pygame.display.set_caption(nom)
screen = pygame.display.get_surface()

while True:
input()
dcimagen()
screen.fill((255,255,255))
screen.blit(cimagen, (x,z))
pygame.display.flip()

def input():
global mov
global z
global x
for event in pygame.event.get():
if event.type == QUIT:
sys.exit(0)
if event.type == KEYDOWN:
if event.key == K_DOWN or event.key == K_s:
mov = “abajo”
z = z+fps
if event.key == K_UP or event.key == K_w:
z = z-fps
if event.key == K_LEFT or event.key == K_a:
x = x-fps
if event.key == K_RIGHT or event.key == K_d:
x = x+fps

def dcimagen():
global mov
global cimagen
if mov == “derecha”:
cimagen = pygame.image.load(derecha)
elif mov == “izquierda”:
cimagen = pygame.image.load(izquierda)
elif mov == “arriba”:
cimagen = pygame.image.load(arriba)
elif mov == “abajo”:
cimagen = pygame.image.load(abajo)

if __name__ == ‘__main__’:
main()

Por supesto ACEPTO cualquier tipo de sugerencia en el codigo

Decimal a binario

#Como tranformar decimal a binario
import array

bin = []
nombre = int(raw_input(“Introduce un numero: “))

while  1 <= nombre/2:
if nombre/2 == 1:
bin.extend([nombre%2])
nombre = nombre/2
bin.extend([nombre])
else:
bin.extend([nombre%2])
nombre = nombre/2
bin.reverse()
print bin

# Definimos variables, una cadena vacia y un entero vacio
# Bucle, 1 es menor o igual a nombre dividido 2
#### QUEDA CLARO QUE PARA PASAR A BINARIO HAY QUE DIVIDIR ENTRE 2!!
# Si el nombre dividido 2 es igual a 1:
# escribe en la lista binario el resto de 2
# y el nombre, osea 1 ( la división jamás quedará en 0.. )
# Si no es asi, añade el resto a la lista y divide el nombre
#
# Una vez acabado el bucle pon la lista alrevés
# Sacala por pantalla

Bueno pues creo que queda clarito que, los nombres de decimal a binario se dividen entre dos
ejemplo: 10/2= Resto 0 Da 5 , 5/2 resto 1 da 2 , 2/2  resto 0 da 1
Si lo lees al reves, el último cociente y los restos 1010

Rectangulo

Lo mismo que anterior pero ahora dibujamos rectangulo

am = int(raw_input(“Amplada del rectangle: “))
al = int(raw_input(“Alcada del rectangle: “))
print “\n\n”,”*”*am
for x in range(0,al-2):
print “*”,” “*(am-4),”*”
print “*”*am

más o menos sigue la misma estructura
#Pide datos
#Imprime tantos * como anchura tenga
#Imprime tantos * como anchura tenga -2 que son los laterales
#Imprime tantos * como anchura tenga

Y queda algo asi
####
#–#
####

Triangulo

Triangulo en ascii

Triangulo

al = int(raw_input(“Altura del triangulo: \n> “))
for x in range(0,al):
z = x*2+1
print ” “*al,”*”*z
al = al -1

Funciona así:

#Mete un numero transformalo a entero y dejalo en la variable
#por x en el rango 0,al (Osea.. recorre la variable tantas veces..)
#Z = x*2+1 obio, matematicas esto se me ocurrio para hacer los simbolos que formarán el triangulo
# imprime tantos espacios como alzada tenga y la Z
#quitale un espacio y logicamente al pasar x en el numero 0 irá el 1 así que.. queda algo así

> Altura del triangulo 5
———-*
——–***

——******
—-********
-**********
Una cosita asi