' Gambas class file Private PorteroDeEstados As New Caretaker 'undo y redo Public Sub _new() End Public Sub Form_Show() 'guardaEstadoDelMarcador: guarda el estado actual.... guardaEstado() Me.Center() End Public Sub buttonMarcador1_Click() Dim nombre As String Dim hora As String nombre = InputBox("Nombre del jugador:") hora = InputBox("Minuto del gol (0-90):") ListBoxEquipo1.Add(nombre & " ( " & hora & "' )") If RadioButton1.Value = True Then LCDLabel1Equipo1.value += 1 Else LCDLabel2Equipo1.value += 1 Endif LCDLabelFinEquipo1.value += 1 'guardaEstadoDelMarcador: guarda el estado actual.... guardaEstado() 'borrar lista de rehacer PorteroDeEstados.BorrarEstadosRedo() End Public Sub buttonMarcador2_Click() Dim nombre As String Dim hora As String nombre = InputBox("Nombre del jugador:") hora = InputBox("Minuto del gol (0-90):") ListBoxEquipo2.Add(nombre & " ( " & hora & "' )") If RadioButton1.Value = True Then LCDLabel1Equipo2.value += 1 Else LCDLabel2Equipo2.value += 1 Endif LCDLabelFinEquipo2.value += 1 'guardaEstadoDelMarcador: guarda el estado actual.... guardaEstado() 'borrar lista de rehacer PorteroDeEstados.BorrarEstadosRedo() End '--------------------------------------------------------------------------------------- ' Public Function EstadoActual() As State Dim estado As New State estado.setjugadores1(ListBoxEquipo1) estado.setjugadores2(ListBoxEquipo2) estado.setmarcador(LCDLabel1Equipo1.value, LCDLabel2Equipo1.value, LCDLabelFinEquipo1.value, LCDLabel1Equipo2.value, LCDLabel2Equipo2.value, LCDLabelFinEquipo2.value) estado.settiempo(RadioButton1.value, RadioButton2.value) Return estado End Public Sub guardaEstado() PorteroDeEstados.addMementoUndo(EstadoActual()) End Public Sub UndoEstado() Dim s As State Dim m As Integer[] Dim r As Boolean[] s = PorteroDeEstados.getMementoUndo() If IsNull(S) Then Message.Error("No hay nada que deshacer") Return Endif 'lista de jugadores que marcaron goles... s.getjugadores1(ListBoxEquipo1) s.getjugadores2(ListBoxEquipo2) m = s.getmarcador() 'goles LCDLabel1Equipo1.Value = m[0] LCDLabel2Equipo1.Value = m[1] LCDLabelFinEquipo1.Value = m[2] LCDLabel1Equipo2.Value = m[3] LCDLabel2Equipo2.Value = m[4] LCDLabelFinEquipo2.value = m[5] 'tiempo (1º o 2º parte) r = s.gettiempo() RadioButton1.Value = r[0] RadioButton2.Value = r[1] ToolButtonRehacer.enabled = True End Public Sub ToolButtonDeshacer_Click() UndoEstado() 'undo End Public Sub ToolButtonRehacer_Click() Dim s As State Dim m As Integer[] Dim r As Boolean[] s = PorteroDeEstados.getMementoRedo() If IsNull(S) Then Message.Error("No hay nada que rehacer") Return Endif 'lista de jugadores que marcaron goles... s.getjugadores1(ListBoxEquipo1) s.getjugadores2(ListBoxEquipo2) m = s.getmarcador() 'goles LCDLabel1Equipo1.Value = m[0] LCDLabel2Equipo1.Value = m[1] LCDLabelFinEquipo1.Value = m[2] LCDLabel1Equipo2.Value = m[3] LCDLabel2Equipo2.Value = m[4] LCDLabelFinEquipo2.value = m[5] 'tiempo (1º o 2º parte) r = s.gettiempo() RadioButton1.Value = r[0] RadioButton2.Value = r[1] End