Pregunta 100000% básica

Consulte acerca de programas, técnicas, algoritmos etc.

Pregunta 100000% básica

Notapor holaquetal » Mié Jun 29, 2011 9:59 pm

primero hola a todos :D
verán tengo un problema q ni siquiera me deja empezar con esto del pygame. El problema es que cuando inicializo la ventana, sale todo normal, pero cuando la intento mover aparece el mensaje de error de "este programa no responde" y no puedo hacer nada mas....
alguna idea?
holaquetal
 
Mensajes: 2
Registrado: Mié Jun 29, 2011 9:55 pm

Re: Pregunta 100000% básica

Notapor Juanxo » Mié Jun 29, 2011 11:17 pm

Por favor, postea código
Avatar de Usuario
Juanxo
 
Mensajes: 437
Registrado: Sab Ene 31, 2009 2:34 am
Ubicación: Madrid(España)

Re: Pregunta 100000% básica

Notapor holaquetal » Sab Jul 02, 2011 2:40 am

Código: Seleccionar todo
import pygame,random
xp,yp = 400,400
pantalla = pygame.display.set_mode((xp,yp))
pantalla.fill((255,255,255))
for x in range(0,xp,20):
  pygame.draw.line(pantalla, (0,0,0) , (x, 1), (x, 800))
for y in range(0,yp,20):
  pygame.draw.line(pantalla, (0,0,0) , (1, y), (800, y))
pygame.draw.line(pantalla,(0,0,0), (yp/2,0),(yp/2,xp),4)
pygame.draw.line(pantalla,(0,0,0), (0,xp/2),(yp,xp/2),4)
pygame.draw.circle(pantalla, (0,0,0), (xp/2,yp/2),5)
pygame.display.flip()
#### La pantalla esta cargada totalmente a partir de aqui
while 1:
colora,colorb,colorc = random.randint(0,250),random.randint(0,250),random.randint(0,250)
funcion = raw_input("f(x)= ")
listacoordenadas = []
for x in range(-6,7):
  listacoordenadas.append((x*20+xp/2,yp/2-eval(funcion)*20))
for indice in range(len(listacoordenadas)-1):
  pygame.draw.line(pantalla,(colora,colorb,colorc), listacoordenadas[indice],listacoordenadas[indice+1],4)
pygame.display.flip()
raw_input()


este es, cuando quiero hacer q grafique una funcion, por ejemplo x**2+10, no pasa nada y aparece esa ventana para finalizar programa :?
gracias de antemano
holaquetal
 
Mensajes: 2
Registrado: Mié Jun 29, 2011 9:55 pm

Re: Pregunta 100000% básica

Notapor shackra » Lun Jul 25, 2011 2:30 am

mira, esta es la situacion, quize arreglar un poco ese codigo y colocar las cosas que faltaban y las que no estaban en su posicion. no pude correrlo porque python me dice que no puede importar pygame, y eso que esta instalado, en fin, tendre que revisar esos paquetes en mi Parabola GNU/Linux. por el momento tendras que probrar tu el codigo y ver si funciona como buscas, si no fuera el caso, te invito a hackearlo a tu gusto ;D.

el valor de la funcion la cambias presionando las teclas de direccion derecha e izquierda

no olvides:
  • tener cuidado con la identacion de los bloques de codigo
  • comentar todo lo que creas que nadie mas que tu entendera (o lo que tu no vayas a entender cuando vuelvas abrir ese archivo en quien sabe cuantos meses)
  • buscar ejemplos de codigo sobre el lenguaje y librerias que tienes pensado desarrollar algo
  • comprender lo que deseas hacer y expresarlo como se debe matematicamente (si deseas usar formulas)
  • tener documentacion a mano sobre las funciones de una libreria, como por ejemplo [url=esta dobre pygame.draw]http://www.pygame.org/docs/ref/draw.html[/url]

# -*- coding: utf-8 -*-


import pygame
from pygame.locals import *
import random

def dibujar_cuadricula(espaciado=20, fondo=(255,255,255)):
pygame.display.get_surface().fill(fondo)

for x in range(0,xp,espaciado):
pygame.draw.line(pygame.display.get_surface(), (0,0,0) , (x, 0), (x, 400))

for y in range(0,yp,espaciado):
pygame.draw.line(pygame.display.get_surface(), (0,0,0) , (0, y), (400, y))

def listar_coordenadas(funcion, ancho_pantalla, alto_pantalla):
xp = ancho_pantalla
yp = alto_pantalla
lista = []

for x in range(-6,7):
lista.append((x * 20 + xp / 2, yp / 2 - funcion * 20))

return lista

xp,yp = 400,400
pygame.init()
pantalla = pygame.display.set_mode((xp,yp))

tiempo = pygame.time.Clock()

#pygame.draw.line(pantalla,(0,0,0), (yp/2,0),(yp/2,xp),4)
#pygame.draw.line(pantalla,(0,0,0), (0,xp/2),(yp,xp/2),4)
#pygame.draw.circle(pantalla, (0,0,0), (xp/2,yp/2),5)
#pygame.display.flip()

#### La pantalla esta cargada totalmente a partir de aqui

colora = random.randint(0,250)
colorb = random.randint(0,250)
colorc = random.randint(0,250)
funcion = 1
lista = listar_coordenadas(funcion, xp, yp)
salir = False

# aqui se deja este codigo por aparte para no marearme
# no seria mala idea comentar que hace ciertas partes de codigo, como este por
# ejemplo :-/
# funcion = raw_input("f(x)= ")
# listacoordenadas = []
# for indice in range(len(listacoordenadas)-1):
# pygame.draw.line(pantalla,(colora,colorb,colorc), listacoordenadas[indice],listacoordenadas[indice+1],4)
# pygame.display.flip()
#
#raw_input()

while not salir:
# mantegaos el framerate en 60
tiempo.tick_busy_loop(60)

# manejamos los eventos de entrada, esto es muuuuy importante y siempre debe
# ser integrado a cualquier codigo sea Pygame o PySFML.
for evento in pygame.event.get():
if evento.type == QUIT:
salir = True
if evento.type == KEYDOWN:
if evento.key == K_ESCAPE:
salir = True
elif evento.key == K_RIGHT:
funcion = funcion + 1
# recalculamos la lista de coordenadas
lista = listar_coordenadas(funcion, xp, xy)
# print "funcion de valor {0} ahora vale {1}".format(funcion - 1,
# funcion)
elif evento.key == K_LEFT:
funcion = funcion - 1
# recalculamos la lista de coordenadas
lista = listar_coordenadas(funcion, xp, xy)
# print "funcion de valor {0} ahora vale {1}".format(funcion + 1,
# funcion)

# ahora nos corresponde dibujar los datos calculados por pantalla
#primero limpiemos el desastre del frame anterior

dibujar_cuadricula()

# ahora dibujamos las lineas con las coordenadas que calculamos

for ind in lista:
try:
pygame.draw.line(pantalla, (colora, colorb, colorc), ind[0], ind[1], 4)
except:
print "error al momento de dibujar las lineas con las coordenadas calculadas"
print "coordenadas no validas para el metodo Line de pygame"
print "ind[0]", ind[0], "ind[1]", ind[1]
exit(1)

# cambiamos el buffer

pygame.display.flip()

raw_input()
Avatar de Usuario
shackra
 
Mensajes: 308
Registrado: Lun Jun 15, 2009 4:10 pm
Ubicación: Costa Rica


Volver a General

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado