Duda ejercicio basico de programacion

Iniciado por arts, 24 Enero 2013, 20:23 PM

0 Miembros y 1 Visitante están viendo este tema.

arts

Muy buenas, estaba haciendo un ejercicio en visual sobre un juego de adivinar un nº que se introduce por pantalla y no se como hacer una de las partes. Exactamente la parte de los acumuladores de los puntos, por no querer rescribir todo el código lo he ido haciendo de una manera y al final me esta dando mas problemas que otra cosa.

El problema dice así: se desea realizar un programa donde se tienen a 2 jugadores y un arbitro, el arbitro introduce un nº por teclado y los 2 jugadores intenta averiguarlo. El nº debe estar entre el 1 y 100. Como máximo tienen 5 intentos y juegan de manera alternada. El que acierta a la primera obtendra 10 pts, si es a la 2ª 8puntos, 3ª 6puntos, 4ª 4 puntos 5ª 2puntos 6ª pierden el juego.
Hay que darles pistas a los jugadores si el nº introducido se encuentra a + o - 3 del nº a acertar mostrar "quemando", si es + o - 7 caliente, si es + o - 15 mostrar templado, resto frio.
Se acumulan los puntos, de forma que  se muestren siempre los puntos aun terminando una partida, poner un botón de inicio y otro de finalizar.

Por ahora me sale todo bien, excepto que siempre se me mete por la misma sentencia en puntos acumulados y gane quien gane se los da siempre al jugador 1.
¿ De que otra forma debería haberlo hecho  o que tengo que cambiar ?, por otra parte como hago un botón finalizar que interactue en el código del sub_button1 que es el botón de iniciar ?.

Código (vbnet) [Seleccionar]
Public Class Form1
   Dim T_PUNTOS_J1 As Short
   Dim T_PUNTOS_J2 As Short
   Dim I As Integer

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       Dim NUM_ACERTAR As Short
       Dim NUM As Short
       Dim PISTAS As Short
       Dim B As Boolean = False
       Dim C_INTENTOS As Short = 0
       Dim C_INTENTOS_J2 As Short = 0

       For Me.I = 0 To 999

           NUM_ACERTAR = InputBox("Que el arbitro introduzca un nº entre 1 y 100")
           Do Until NUM_ACERTAR >= 1 And NUM_ACERTAR <= 100
               NUM_ACERTAR = InputBox("Introduzca un nº entre 1 y 100")
           Loop

           Do
               If B = False Then
                   B = True
                   C_INTENTOS = C_INTENTOS + 1
                   NUM = InputBox("Turno del Jugador 1, intento nº: " & C_INTENTOS, "Turno Jugador 1", 0)
                   TextBox4.Text = TextBox4.Text & " Numero: " & NUM & Chr(13) & Chr(10)
               Else
                   B = False
                   C_INTENTOS_J2 = C_INTENTOS_J2 + 1
                   NUM = InputBox("Turno del Jugador 2, intento nº: " & C_INTENTOS_J2, "Turno Jugador 2", 0)
                   TextBox4.Text = TextBox4.Text & " Numero: " & NUM & Chr(13) & Chr(10)
               End If

               'MENSAJES DE TEXTO PISTAS
               If NUM_ACERTAR > NUM Then
                   PISTAS = NUM_ACERTAR - NUM
               ElseIf NUM_ACERTAR < NUM Then
                   PISTAS = NUM - NUM_ACERTAR
               ElseIf NUM = NUM_ACERTAR Then
                   PISTAS = 0
               End If

               If PISTAS <= 3 Then
                   TextBox1.Text = "QUEMANDO"
               ElseIf PISTAS <= 7 Then
                   TextBox1.Text = "CALIENTE"
               ElseIf PISTAS <= 15 Then
                   TextBox1.Text = "TEMPLADO"
               Else
                   TextBox1.Text = "FRIO"
               End If

               'RECUENTOS DE LOS PUNTOS ACUMULADOS
               If C_INTENTOS = 1 And NUM = NUM_ACERTAR Then
                   T_PUNTOS_J1 = T_PUNTOS_J1 + 10
                   C_INTENTOS = 6
                   TextBox1.Text = "HAS GANADO J1"
               ElseIf C_INTENTOS = 2 And NUM = NUM_ACERTAR Then
                   T_PUNTOS_J1 = T_PUNTOS_J1 + 8
                   C_INTENTOS = 6
                   TextBox1.Text = "HAS GANADO J1"
               ElseIf C_INTENTOS = 3 And NUM = NUM_ACERTAR Then
                   T_PUNTOS_J1 = T_PUNTOS_J1 + 6
                   C_INTENTOS = 6
                   TextBox1.Text = "HAS GANADO J1"
               ElseIf C_INTENTOS = 4 And NUM = NUM_ACERTAR Then
                   T_PUNTOS_J1 = T_PUNTOS_J1 + 4
                   C_INTENTOS = 6
                   TextBox1.Text = "HAS GANADO J1"
               ElseIf C_INTENTOS = 5 And NUM = NUM_ACERTAR Then
                   T_PUNTOS_J1 = T_PUNTOS_J1 + 2
                   C_INTENTOS = 6
                   TextBox1.Text = "HAS GANADO J1"
               ElseIf C_INTENTOS_J2 = 1 And NUM = NUM_ACERTAR Then
                   T_PUNTOS_J2 = T_PUNTOS_J2 + 10
                   C_INTENTOS = 6
                   TextBox1.Text = "HAS GANADO J2"
               ElseIf C_INTENTOS_J2 = 2 And NUM = NUM_ACERTAR Then
                   T_PUNTOS_J2 = T_PUNTOS_J2 + 8
                   C_INTENTOS = 6
                   TextBox1.Text = "HAS GANADO J2"
               ElseIf C_INTENTOS_J2 = 3 And NUM = NUM_ACERTAR Then
                   T_PUNTOS_J2 = T_PUNTOS_J2 + 6
                   C_INTENTOS = 6
                   TextBox1.Text = "HAS GANADO J2"
               ElseIf C_INTENTOS_J2 = 4 And NUM = NUM_ACERTAR Then
                   T_PUNTOS_J2 = T_PUNTOS_J2 + 4
                   C_INTENTOS = 6
                   TextBox1.Text = "HAS GANADO J2"
               ElseIf C_INTENTOS_J2 = 5 And NUM = NUM_ACERTAR Then
                   T_PUNTOS_J2 = T_PUNTOS_J2 + 2
                   C_INTENTOS = 6
                   TextBox1.Text = "HAS GANADO J2"
               End If

               TextBox2.Text = T_PUNTOS_J1
               TextBox3.Text = T_PUNTOS_J2

           Loop Until C_INTENTOS >= 5
           I = 99999
       Next
   End Sub

End Class

Danyfirex


arts