C/Visual C - como creo un juego en c++

   
Vista:
Imágen de perfil de adamond

como creo un juego en c++

Publicado por adamond (1 intervención) el 15/07/2014 04:35:52
Hola mundo....

veran he ademas de el juego quiero aprender total y seguramente le c++ pues los videotutoriales no me satisfacen con lo que necesito...
si hay alguien que sepa y pueda ayudarme a crear mi propio juego le agradeceria el favor de hacerlo

enserio soy todo un NOOB!!!!!!!!!!!!!!!



ATT: adamond
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Francisco

como creo un juego en c++

Publicado por Francisco feco99@yahoo.com (7 intervenciones) el 01/08/2014 16:48:11
que clase de juego quieres hacer, si quieres algo sencillo mira este codigo de un sudoku que hice, esta muy simple pero te puede servir para empezar: Puedes escribirme a mi correo para cualquier duda.

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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
#include <stdio.h>
#include <stdlib.h>
#include <windows.h> 
 
int tablero[9][9]={{8,0,0,4,0,6,0,0,7}, // Valores inicales del sudoku
                   {0,0,0,0,0,0,4,0,0,},
                   {0,1,0,0,0,0,6,5,0,},
                   {5,0,9,0,3,0,7,8,0},
                   {0,0,0,0,7,0,0,0,0},
                   {0,4,8,0,2,0,1,0,3},
                   {0,5,2,0,0,0,0,9,0},
                   {0,0,1,0,0,0,0,0,0},
                   {3,0,0,9,0,2,0,0,5}};
 
int bloqueados[9][9]; // Esta matriz y la funcion que sigue se usa para 
                      //que el usuario no cambie los numeros iniciales
void initbloq() {
     int i,j;
      for (i=0;i<9;i++) {
         for (j=0;j<9;j++) {
             if (tablero[i][j]!=0) bloqueados[i][j]= 1;
         }
     }
}
 
void imprimeTablero() {   // Despliega un tablero en pantalla, con los numeros inciales y los que vamos poniendo 
     int i,j, valor;
     system("cls"); // Borramos la pantalla
 
     printf ("   ");
     for (int i=0;i<9;i++) printf (" %c ",char(65+i)); // Letras de la "A" a la "I"
     printf ("\n");
 
     // Marco superior
     printf ("  %c",char(201)); // Esquina superior izquierda
     for (i=0;i<27;i++) {
         if (i==8 || i==17) printf ("%c",char(203)); else printf ("%c",char(205));
     }
     printf ("%c\n",char(187)); // Esquina superior derecha
 
     for (i=0;i<9;i++) {
         if (i==3 || i==6) { // lineas que diviran los 9 cuadrantes
            printf ("  %c",char(204));
            for (int k=0;k<27;k++) {
                if (k==8 || k==17) printf ("%c",char(206)); // Cruz
                else printf ("%c",char(205)); // Dos lineas horizontales
            }
            printf("%c\n",char(185)); // Division
         }
         else if (i>0) printf ("  %c        %c        %c         %c\n",char(186),char(186),char(186),char(186));
 
            printf(" ");
            for (j=0;j<9;j++) {
                valor=tablero[i][j];
                if (j==0) {
                   printf ("%d",i+1); // Los numeros que indican cada renglon
                   printf ("%c",char(186)); // Dos lineas verticales
                }
                if (j==2 || j==5) {
                         if (valor==0)printf ("  %c",char(186)); // Ponemos un espacio en vez de un cero mas dos lineas verticales
                         else printf (" %d%c",valor,char(186)); // Numeros del "1" al "9" mas dos lineas verticales
                }
                else {
                     if (valor==0) printf ("   ",valor); // Ponemos un espacio en vez de un cero
                     else  printf (" %d ",valor); // Numeros del "1" al "9"
                }
            }
            printf ("%c\n",char(186));
     }
 
     // Marco inferior
     printf ("  %c",char(200)); // Esquina inferior izquierda
     for (i=0;i<27;i++) {
         if (i==8 || i==17) printf ("%c",char(202)); else printf ("%c",char(205));
     }
     printf ("%c\n",char(188));  // Esquina inferior derecha 
}
 
bool valida(int renglon,int columna, int valor) {
     int i,j,ii,jj;
     // checamos renglon
     for (i=0;i<9;i++) {
         if (i!=columna) {
            if (valor==tablero[renglon][i]) {
               Beep(500,150); // Sonido para indicar numero repetido
               return false;
            }
         }
     }
     // checamos columna
     for (i=0;i<9;i++) {
         if (i!=renglon) {
            if (valor==tablero[i][columna]) {
               Beep(500,150); // Sonido para indicar numero repetido
               return false;
            }
         }
     }
     // Seleccionamos a que caja pertenece el numero (1-9)
     if (renglon>=0 && renglon<=2) ii=0;
     if (renglon>=3 && renglon<=5) ii=3;
     if (renglon>=6 && renglon<=8) ii=6;
     if (columna>=0 && columna<=2) jj=0;
     if (columna>=3 && columna<=5) jj=3;
     if (columna>=6 && columna<=8) jj=6;
 
      // checamos cada una de las cajas
     for (i=0;i<3;i++) {
         for (j=0;j<3;j++) {
             if (i+ii!=renglon && j+jj!=columna) {
                if (valor==tablero[i+ii][j+jj]) {
                   Beep(500,150); // Sonido para indicar numero repetido
                   return false;
                }
             }
         }
     }
 
     if (bloqueados[renglon][columna]) { // Para ver si es un numero inical
       Beep(500,150);
       return false;
     }
 
     return true;  // Pasó las cuatro pruebas
}
 
bool checaVictoria() { // Solo checa si todos los lugares tienen un numero mayor a cero
     int i,j;
     for (i=0;i<9;i++) {
         for (j=0;j<9;j++) {
            if (tablero[i][j]==0) {
               return false;
            }
         }
     }
     return true;
}
 
int main() {
    char r[3]; // vector que guarda la respuesta del usuario
    int renglon,columna,valor; // Variables para usar con la matriz tablero[]  
    bool victoria=false; // Vale true cuando resolvemos el Sudoku
 
    initbloq(); // inicamos la matriz que guarda los numeros iniciales
 
    while (!victoria) { // Repetimos el ciclo, mientras no ganemos
       imprimeTablero(); // Actualizamos el tablero
       printf ("Ingresa una columna, un renglon y un nuevo valor, ejemplo A11: "); // Imprimimos un mensaje explicativo
       scanf ("%s",r); // Leemos la entrada del usuario
       if (r[0]!=NULL && r[1]!=NULL && r[2]!=NULL && // Checamos que se ingresen tres caracteres
          (r[0]>=65 && r[0]<=73 || r[0]>=97 && r[0]<=105) && // Checamos que se ingrese una letra de la 
                                                             //"A"  a la "I" mayuscula o minuscula
          r[1]>=49 && r[1]<=57 && r[2]>=49 && r[2]<=57) { // Checamos que se ingresen solo numeros del 1 al 9
 
               columna=r[0]-65; // Restamos 65 del codigo ascii del vector, para obtener 0-9
               renglon=r[1]-49; // Restamos 49 del codigo ascii del vector, para obtener del 0 al 9
               valor=r[2]-48; // Restamos 48 del codigo ascii del vector, para obtener 1-8
               if (columna>9) columna=columna-32; // Si la columna es minuscula la convertimos a
                                                  // mayuscula restandole 32 a su codigo ascii
               if (valida(renglon, columna, valor))  // Checamos si el numero no esta repetido
                  tablero[renglon][columna]=valor; // Si no, lo asignamos en la matriz
               if (checaVictoria()) victoria=true; // Checamos si terminamos el tablero, si no, repetimos el ciclo
       }
       else Beep(500,150); // Se escucha un sonido de error
   }
   printf ("Ganaste.");
   system("pause");
}
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