Página 1 de 1

[Ayuda] Array y Label

Publicado: 17 Sep 2011, 02:20
por ToXic
Hola gente, como estan? necesito un poquitito de su sabiduria!!!
La cuestion es asi, hace unos dias con unos compañeros juegue un juego que se llama Cadaver exquisito (en lapiz y papel)
Link Wiki de Cadaver Exquisito
y bueno, se me ocurrio programarlo, aunque lo escencial ya esta echo, quiero modificar algo y no me sale.
El tema es que quiero generar un array con los nombres de los jugadores y en un label poner al jugador que le tocaria... pero no puedo, lei y lei pero no encuentro como hacerlo.

Este es el fuente completo:

Código: Seleccionar todo

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Include <Array.au3>

#Region ### START Koda GUI section ### Form=m:\cadaver exquisito\form1.kxf
#cs
Principal
#ce
$Form1_1_1 = GUICreate("Form1", 482, 429, 337, 145)
$Group1 = GUICtrlCreateGroup("Opciones", 8, 64, 465, 81)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$Label2 = GUICtrlCreateLabel("Cantidad de Jugadores :", 16, 88, 119, 17)
$Label3 = GUICtrlCreateLabel("Cantidad de Rondas :", 16, 112, 107, 17)
$Input1 = GUICtrlCreateInput("", 136, 80, 49, 24, BitOR($GUI_SS_DEFAULT_INPUT,$ES_NUMBER))
$Input2 = GUICtrlCreateInput("", 136, 104, 49, 24, BitOR($GUI_SS_DEFAULT_INPUT,$ES_NUMBER))
$Button1 = GUICtrlCreateButton("Comenzar", 216, 104, 97, 33)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
$Button2 = GUICtrlCreateButton("Reiniciar", 344, 104, 97, 33)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
$Button7 = GUICtrlCreateButton("Elegír nombre de los Jugadores", 240, 80, 169, 17)
GUICtrlSetFont(-1, 8, 400, 0, "Calibri")
GUICtrlSetBkColor(-1, 0xD7E4F2)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("Estado", 8, 152, 465, 49)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$Label4 = GUICtrlCreateLabel("Jugador:", 16, 176, 54, 20)
GUICtrlSetFont(-1, 10, 400, 0, "Tahoma")
GUICtrlSetColor(-1, 0xFF0000)
$Label5 = GUICtrlCreateLabel("Ronda:", 296, 176, 45, 20)
GUICtrlSetFont(-1, 10, 400, 0, "Tahoma")
GUICtrlSetColor(-1, 0xFF0000)
$Label10 = GUICtrlCreateLabel("", 72, 176, 204, 20)
$Label11 = GUICtrlCreateLabel("", 344, 176, 44, 20)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group3 = GUICtrlCreateGroup("Frase del último Jugador", 8, 208, 465, 65)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$Input3 = GUICtrlCreateInput("", 16, 232, 449, 24, BitOR($GUI_SS_DEFAULT_INPUT,$ES_AUTOVSCROLL,$ES_READONLY), $WS_EX_STATICEDGE)
GUICtrlSetFont(-1, 12, 800, 0, "Tahoma")
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group4 = GUICtrlCreateGroup("Tus Frases", 8, 280, 465, 121)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$Input4 = GUICtrlCreateInput("", 16, 304, 449, 24)
$Input5 = GUICtrlCreateInput("", 16, 336, 449, 24)
$Button3 = GUICtrlCreateButton("Borrar Frases", 99, 368, 129, 25)
$Button4 = GUICtrlCreateButton("Siguiente Jugador", 275, 368, 129, 25)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Label6 = GUICtrlCreateLabel("Developed By", 320, 404, 71, 17)
$Label7 = GUICtrlCreateLabel("ToXic ®", 392, 400, 74, 26)
GUICtrlSetFont(-1, 14, 800, 0, "Consolas")
GUICtrlSetColor(-1, 0x00FF00)
$Label1 = GUICtrlCreateLabel("Cadavre Exquis", 8, 8, 465, 55)
GUICtrlSetFont(-1, 42, 800, 0, "Gorestep")
GUICtrlSetColor(-1, 0xFF0000)
GUISetState(@SW_SHOW)

$Form2 = GUICreate("Cadaver Exquisito", 481, 535, 436, 33)
$Edit1 = GUICtrlCreateEdit("", 8, 56, 464, 447, BitOR($ES_LEFT,$ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$ES_WANTRETURN,$WS_VSCROLL,$WS_BORDER))
GUICtrlSetFont(-1, 14, 800, 0, "Times New Roman")
$Label8 = GUICtrlCreateLabel("He aqui vuestra creacion...", 8, 8, 319, 47)
GUICtrlSetFont(-1, 18, 800, 0, "Segoe Print")
GUICtrlSetColor(-1, 0xFF0000)
$Button5 = GUICtrlCreateButton("Copiar al ClipBoard", 16, 504, 161, 25)
$Button6 = GUICtrlCreateButton("Volver a Jugar", 296, 504, 169, 25)

$Form3 = GUICreate("Agregar Jugadores", 323, 104, 472, 280)
$Group5 = GUICtrlCreateGroup("Nombre Jugadores", 8, 8, 305, 57)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$Input6 = GUICtrlCreateInput("", 88, 32, 145, 21)
$Label12 = GUICtrlCreateLabel("Jugador", 24, 36, 42, 17)
$Label13 = GUICtrlCreateLabel("0", 72, 37, 10, 17)
$Button8 = GUICtrlCreateButton("Agregar", 248, 32, 59, 25)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button9 = GUICtrlCreateButton("Reiniciar Nombres", 16, 72, 107, 25)
$Button10 = GUICtrlCreateButton("Listo", 232, 72, 75, 25)

#EndRegion ### END Koda GUI section ###

Global $jug=1,$rond=1,$jugador[15],$c=0,$j=0

While 1
$msg = GuiGetMsg()
Select
	Case $msg = $GUI_EVENT_CLOSE
ExitLoop
	Case $msg = $Button1
		if GUICtrlRead($Input1)>1 AND GUICtrlRead($Input1)<10 AND GUICtrlRead($Input2)>0  Then
			GUICtrlSetState($Input1, $GUI_DISABLE)
			GUICtrlSetState($Input2, $GUI_DISABLE)
			GUICtrlSetState($Button1, $GUI_DISABLE)
			GUICtrlSetState($Input4, $GUI_ENABLE)
			GUICtrlSetState($Input5, $GUI_ENABLE)
			GUICtrlSetState($Button3, $GUI_ENABLE)
			GUICtrlSetState($Button4, $GUI_ENABLE)
			GUICtrlSetData($Label10,$jugador[0])
			GUICtrlSetData($Label11,$rond)
			Else
				MsgBox(0,"Error","Elija entre 2 y 10 jugadores  y como mínimo una ronda")
			EndIf
		
	Case $msg = $Button2
		Reiniciar()
		
	Case $msg = $Button3
		GUICtrlSetData($Input4,"")
		GUICtrlSetData($Input5,"")
		
	Case $msg = $Button4
		If(GUICtrlRead($Input4)=="" OR GUICtrlRead($Input5)=="") Then
		MsgBox(0,"ERROR:","Ingrese texto")
		Else
		GUICtrlSetData($Input3,GUICtrlRead($Input5))
		GUICtrlSetData($Edit1,GUICtrlRead($Edit1)&GUICtrlRead($Input4)& @CRLF &GUICtrlRead($Input5)&@CRLF) 
			Sigjug()
		EndIf
	Case $msg = $Button5
		ClipPut(GUICtrlRead($Edit1))
		
	Case $msg = $Button6
		if MsgBox(4,"Confirmacion","¿Esta seguro que quiere reiniciar todo?") == 6 Then
			Reiniciar()
			GUISetState(@SW_HIDE,ControlGetHandle("","",$Form2))
		EndIf
		
		
	Case $msg = $Button7
		If GUICtrlRead($Input1)>1 AND GUICtrlRead($Input1)<10 AND GUICtrlRead($Input2)>0  Then
		GUISetState(@SW_SHOW,ControlGetHandle("","",$Form3))
		Else
			MsgBox(0,"Error","Debe elegir primero la cantidad de jugadores")
		EndIf
		
	Case $msg = $Button8
		if GUICtrlRead($Input6)=="" Then
			MsgBox(0,"Error","Debe ingresar un nombre valido")
		Else
			Agregar()
		EndIf
		
	Case $msg = $Button9
		$jugador=""
		GUICtrlSetData($Input6,"")
		GUICtrlSetState($Input6,$GUI_ENABLE)
		GUICtrlSetState($Button8,$GUI_ENABLE)
		$c=0
	
	Case $msg = $Button10
		GUISetState(@SW_HIDE,ControlGetHandle("","",$Form3))
		
	EndSelect
Wend
Exit

Func Sigjug()
	
	If GUICtrlRead($Input2)==$rond AND $jug==GUICtrlRead($Input1) then
		GUICtrlSetData($Input3,"")
		GUICtrlSetData($Input4,"")
		GUICtrlSetData($Input5,"")
		MsgBox(0,"Juego Terminado", "Aceptar para ver el cadaver")
		WinActivate("Cadaver Exquisito")
		GUISetState(@SW_SHOW,ControlGetHandle("","",$Form2))
		Return
	EndIf
	
	if  GUICtrlRead($Input2)>=$rond AND $jug<=(GUICtrlRead($Input1)) Then
		
		GUICtrlSetData($Input4,"")
		GUICtrlSetData($Input5,"")
		$jug+=1
		if $jug==(GUICtrlRead($Input1))+1 Then
			$rond+=1
			$jug=1
		EndIf
		GUICtrlSetData($Label10,$jugador[$j])
		GUICtrlSetData($Label11,$rond)
		$j+=1
		Return
	EndIf	
EndFunc

Func Reiniciar()
	
	GUICtrlSetData($Input1,"")
	GUICtrlSetData($Input2,"")
	GUICtrlSetData($Input3,"")
	GUICtrlSetData($Input4,"")
	GUICtrlSetData($Input5,"")
	GUICtrlSetData($Edit1,"")
	GUICtrlSetData($Label10,"")
	GUICtrlSetData($Label11,"")
	GUICtrlSetState($Button1, $GUI_ENABLE)
	GUICtrlSetState($Input1, $GUI_ENABLE)
	GUICtrlSetState($Input2, $GUI_ENABLE)

	GUICtrlSetState($Input4, $GUI_DISABLE)
	GUICtrlSetState($Input5, $GUI_DISABLE)
	GUICtrlSetState($Button3, $GUI_DISABLE)
	GUICtrlSetState($Button4, $GUI_DISABLE)
	$jug=1
	$rond=1
	$c=0
	$j=0
	Return
EndFunc

Func Agregar()
	if GUICtrlRead($Input1)>($c+1) Then
	_ArrayInsert($jugador[$c],GUICtrlRead($Input6))
	GUICtrlSetData($Input6,"")
	$c+=1
	Else
		GUICtrlSetState($Input6,$GUI_DISABLE)
		GUICtrlSetState($Button8,$GUI_DISABLE)
	
	EndIf

	Return
EndFunc
Si no quieren verlo todo pq seguro es un quilombo de cosas, les dejo las partes donde debe estar el error:

Código: Seleccionar todo

Func Agregar()
	if GUICtrlRead($Input1)>($c+1) Then
	_ArrayInsert($jugador[$c],GUICtrlRead($Input6))              [color=#FF0000]ACA?[/color]
	GUICtrlSetData($Input6,"")
	$c+=1
	Else
		GUICtrlSetState($Input6,$GUI_DISABLE)
		GUICtrlSetState($Button8,$GUI_DISABLE)
	
	EndIf

	Return
EndFunc

Código: Seleccionar todo

if  GUICtrlRead($Input2)>=$rond AND $jug<=(GUICtrlRead($Input1)) Then
		
		GUICtrlSetData($Input4,"")
		GUICtrlSetData($Input5,"")
		$jug+=1
		if $jug==(GUICtrlRead($Input1))+1 Then
			$rond+=1
			$jug=1
		EndIf
		GUICtrlSetData($Label10,$jugador[$j])           [color=#FF0000]ACA?[/color]
		GUICtrlSetData($Label11,$rond)
		$j+=1
		Return
	EndIf	

Muchas Gracias!

Re: [Ayuda] Array y Label

Publicado: 17 Sep 2011, 21:12
por Chefito
Pon en vez de esto _ArrayInsert($jugador[$c],GUICtrlRead($Input6)) esto otro $jugador[$c]=GUICtrlRead($Input6).

Aun así te va a seguir fallando. Mira los contadores, variables $c y $j. Saca sus resultados por consola. Así averiguarás porqué te puede fallar.

Por lo que he visto por encima hay más fallos. Tu ves probando, y cuando encuentres un fallo que no puedas corregir, dinoslo.

Saludos.