C sharp - Juego en c#?

 
Vista:
sin imagen de perfil

Juego en c#?

Publicado por User47 (2 intervenciones) el 18/05/2014 00:33:40
me asignaron un proyecto en c# consola y se trata de hacer un juego de salvar las letras que van cayendo desde cualquier parte de la pantalla en forma aleatoria, pulsando la letra en el teclado,
debe llevar faltas, aciertos, y score
y dependiendo de cierto numero de aciertos avanzas al siguiente nivel, o con faltas terminas el juego,
si las letras caen es un falta
ya sea si pierde o gana tiene que salir el los resulatos de todos las faltas, aciertos y score

tengo esto hasta ahora

este codigo es para que baje un letra desde una posicion a cierta velocidad


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Program
    {
        static void Main(string[] args)
        {
            int a, b,d;
            b=0;
            a=0;
           while (a<= 11)
            {
                Console.Clear();
                Console.SetCursorPosition(0,b);
                Console.WriteLine("M");
                b=b+1;
                a = a + 1;
                System.Threading.Thread.Sleep(500);
            }
           Console.ReadLine();
        }
    }

ahora como haria para capturar la letra antes de que caigan, ya intente con console.readline(); pero me interrumpe el ciclo y las letras no siguen caendo a menos que introdusca una letra
ah! y cuando uno acierta una letra, esta desaparece
no estoy pidiendo mucho solo que me ayuden acepto ideas codigos, etc. gracias y respondere en caso de no haberme explicado bien
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
sin imagen de perfil

Juego en c#?

Publicado por Pico (114 intervenciones) el 18/05/2014 13:40:37
A ti no te interesa introducir una letra, como hace console.readline(), sino comprobar si una tecla está presionada, y eso lo dice GetKeyEstate. Otra solución es usar el evento KeyDown del form, pero a mí me parece más chunguilla.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Juego en c#?

Publicado por User47 (2 intervenciones) el 19/05/2014 09:16:11
Disculpa que soy novato y no entiendo bien la funcion GetKeystate, puedes ayudarme ya busque pero no entiendo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Juego en c#?

Publicado por Pico (114 intervenciones) el 19/05/2014 11:05:57
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class Program
    {
        [DllImport("user32.dll")] static extern short GetKeyState(int nVirtKey);
        [DllImport("user32.dll")] static extern short VkKeyScan(char ch);
 
        static void Main(string[] args)
        {
            int a, b, d, t; b = 0; a = 0; t=500;
            Random r = new Random();
            while (true)
            {
                char c = (char)r.Next(97, 122);
                d = r.Next(1, 79);
                while (a <= 11)
                {
                    Console.Clear();
                    Console.SetCursorPosition(d, b);
                    Console.WriteLine(char.ToUpper(c));
                    if ((GetKeyState(VkKeyScan(c)) & 0x8000) != 0)
                    {
                        Console.Beep();
                        break;
                    }
                    b += 1;
                    a = a + 1;
                    System.Threading.Thread.Sleep(t);
                }
                a = 0;
                b = 0;
                t= (int)(t/1.08);
            }
        }
    }
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Juego en c#?

Publicado por jose (6 intervenciones) el 25/05/2014 03:53:48
oigan y como se hace cuando la letra presionada en el teclado no es la correcta, para sumarle una falta, tengo esa duda?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Juego en c#?

Publicado por Pico (114 intervenciones) el 25/05/2014 07:15:12
Pues poner una variable y sumarle uno con un else en el if, ¿no?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Juego en c#?

Publicado por jose (6 intervenciones) el 25/05/2014 22:48:37
ya lo intente pero anque no se precione ninguna tecla se toma como falta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Juego en c#?

Publicado por Pico (114 intervenciones) el 26/05/2014 15:28:08
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
class Program
    {
        static int falta = 0;
 
        static void Main(string[] args)
        {
            int a, b, d, t; b = 0; a = 0; t = 500;
            Random r = new Random();
            while (true)
            {
                char c = (char)r.Next(97, 122);
                d = r.Next(1, 79);
                while (a <= 11)
                {
                    Console.Clear();
                    Console.SetCursorPosition(0, 20);
                    Console.Write(falta);
                    Console.SetCursorPosition(d, b);
                    Console.WriteLine(char.ToUpper(c));
                    switch (Tecla(c, t))
                    {
                        case 1: // acierto
                            Console.Beep();
                            a = 20;
                            break;
                        case 2:  // tecla falsa
                            Console.Beep(140, 180);
                            Console.Beep(140, 180);
                            falta++;
                            break;
                        case 3: //ninguna tecla pulsada
 
                            break;
                    }
                    b += 1;
                    a = a + 1;
                }
                if (a == 12) falta++;
                a = 0;
                b = 0;
                t = (int)(t / 1.08);
            }
        }
 
        static int Tecla(char c, int milis)
        {
            milis *= 20000;
            long a = DateTime.Now.Ticks;
            do
            {
                if (Console.KeyAvailable)
                {
                    ConsoleKeyInfo cc = Console.ReadKey(true);
                    while (Console.KeyAvailable) Console.ReadKey(true);
                    if (cc.KeyChar == c) return 1;
                    else return 2;
                }
            }
            while (a + milis > DateTime.Now.Ticks);
            return 3;
        }
   }



Vas a aprender mucho haciendo los programas yo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Serpiente en Consola C# (bueno, una parte)

Publicado por JuanBravo (1 intervención) el 20/06/2015 09:10:45
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
using System;
class Clase
{
    static int []A1 = {10, 11, 12, 13};
    static int []A2 = {10, 10, 10, 10};
    public static void Main(string[] args)
    {
        System.Console.WindowHeight = System.Console.LargestWindowHeight;
        System.Console.BackgroundColor = System.ConsoleColor.Blue;
        Console.WindowWidth = Console.LargestWindowWidth;
        Console.ForegroundColor = ConsoleColor.White;
        Console.Clear();
        Console.CursorVisible = false;
 
        ConsoleKeyInfo tecla; int x, y; x = 12; y = 10;
        do
        {
            tecla = Console.ReadKey(true);
            switch(tecla.Key)
            {
                case ConsoleKey.UpArrow: if(y>6)y--;
                break;
                case ConsoleKey.DownArrow: if(y<24)y++;
                break;
                case ConsoleKey.LeftArrow: if(x>10)x--;
                break;
                case ConsoleKey.RightArrow: if(x<49)x++;
                break;
            }
            imprimir(x,y);
            pintar();
        }while(tecla.Key != ConsoleKey.Enter);
    }
    static void imprimir(int x, int y)
    {
        Console.Clear();
        A1[3] = A1[2]; A2[3] = A2[2];
        A1[2] = A1[1]; A2[2] = A2[1];
        A1[1] = A1[0]; A2[1] = A2[0];
        A1[0] = x; A2[0] = y;
 
        for(int i = 0; i < 4; i++)
        {
        Console.SetCursorPosition(A1[i],A2[i]);
        if(i==0)
        Console.WriteLine((char)2);
        else
        Console.WriteLine("*");
        }
    }
    static void pintar()
    {
        for(int i = 9; i < 50; i++)
        {
            Console.SetCursorPosition(i,5);
            Console.WriteLine((char)1);
        }
        for(int i = 9; i < 50; i++)
        {
            Console.SetCursorPosition(i,25);
            Console.WriteLine((char)1);
        }
        for(int i = 5; i < 25; i++)
        {
            Console.SetCursorPosition(9,i);
            Console.WriteLine((char)1);
        }
        for(int i = 5; i < 25; i++)
        {
            Console.SetCursorPosition(50,i);
            Console.WriteLine((char)1);
        }
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar