
Introduccion
"¡Linux no es para juegos!" - Frase obsoleta: ahora hay muchos juegos geniales específicamente para este maravilloso sistema. Pero aún así, a veces, quiero algo especial que se adapte a usted ... Y decidí crear este especial.
Base
No mostraré y diré todo el código (esto no es muy interesante), solo los puntos principales.
1 personaje
Aquí se enumeran todos los parámetros del personaje (salud, armadura, experiencia, etc.) de interés es la representación y la dirección del movimiento (que no está disponible ahora).
int x = 5, y = 5; hp = 100, maxhp = 100, dm = 20, armor = 0, xp = 0, level = 0, diff = 10,
2. Gestión
Cómo mover el personaje con tanta claridad (x - \ ++, y - \ ++). Pero el procesamiento del teclado es más entretenido:
char key; char getkey() { system("stty raw"); key = getchar(); system("stty cooked"); return key; }
Solo queda establecer los "caracteres de control". Se puede hacer con un interruptor, pero lo odio.
switch(...) case .. : ... ; break
switch(...) case .. : ... ; break
mejor así
#define KEY if (key == #define I ){ #define J ;}else void keys() { getkey(); KEY 'a' I x-- ; pos = 1 J KEY...... }
Belleza! Funciones de bucle y correr por la pantalla! Pero de alguna manera dura ... Y el cursor parpadea, y las letras ... ¡Arreglalo!
Wow! ¡El uno por ciento está listo!
3. El mundo alrededor
Aquí hacemos matrices para x, y piezas del mundo y las piezas en sí
(char o[N])
, lo mismo para monstruos y bonificaciones.
Creamos la función
world(int objx[N] .... objy[N] ... obj[N], ... objcolor[N])
por analogía con
hero()
, pero con parámetros y un bucle adicional para generar la matriz ... por interés, dibujamos solo en el campo de visión (vis)
(if (ox[k] < vis && oy[k]....))
Ahora llenamos la pantalla con partículas del mundo a través de habitaciones y pasajes sin complicaciones y huecos, al mismo tiempo que ingresamos enemigos y objetos, para una aleatoriedad completa no se olvide de
srand(time(NULL));
4. Interacción
Ahora, de alguna manera, no debemos atravesar paredes y monstruos, recibir bonificaciones de los objetos.
Nuestro favorito para y #define
#define TOUCH if (x == ox[i] && y == oy[i] && pos == #define HIT x == ex[i] && y == ey[i] && pos == for (int i = 0; i <= n; i++) { if (i <= diff) { if (Mdm) ehp[i]-=2 ; // " " epos[i] = 0; if (ex[i] < x+5 && ex[i] > x-5 && ey[i] < y+5 && ey[i] > y-5 ) { edel(i); // if (ex[i] < x I ex[i]++ ; epos[i] = 1 J if (ex[i] > x I ex[i]-- ; epos[i] = 2 J if (ey[i] < y I ey[i]++ ; epos[i] = 3 J if (ey[i] > y I ey[i]-- ; epos[i] = 4 ;} } for (int j = 0; j <= n; j++) // while (ex[i] == ox[j] && ey[i] == oy[j] || ex[i] == ex[j] && ey[i] == ey[j] && j != i) { if (epos[i] == 1) ex[i]-- ; else if (epos[i] == 2) ex[i]++ ; else if (epos[i] == 3) ey[i]-- ; else if (epos[i] == 4) ey[i]++ ; } if (x == ex[i] && y == ey[i]) // "" { if (ehp[i] > 1) { ehp[i] -= dm; (edm[i] < armor) ? hp -= 0 : hp -= edm[i]-armor; } else { ex[i] = ey[i] = -1; xp += exp[i]; ehp[i] = 12; } } if (!ght) // { if (HIT 1) y++ ;else if (HIT 2) x-- ;else if (HIT 3) y-- ;else if (HIT 4) x++ ; } } if (!ght) // , { TOUCH 1 I y++ J TOUCH 2 I x-- J TOUCH 3 I y-- J TOUCH 4 ) x++ ; } }
5 menú
Simplemente mostramos el menú en la pantalla, numeramos los elementos, usando getkey () procesamos la elección del jugador. Escribimos la barra de estado del personaje, implementamos el menú de bombeo, escribimos el fondo y obtenemos lo que llamé "Subsuelo".
Conclusión
Esto es algo Puedes jugar
descargando , desempacando y ejecutando de esta manera:
$ sudo chmod +x Subsoil-1.0/Subsoil
$ Subsoil-1.0/Subsoil
o, finalmente, inspirado, escríbete una aventura a tu gusto. Te advierto de antemano: ¡mi juego no es fácil!
Enlaces
Generación procesal ,
inspiradora .