Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define COL 2
- #define ROW 2
- #define MAX 6
- #include <stdio.h>
- #include <stdlib.h>
- int sze_getline(char s[], int lim) {
- int i, c;
- for (i = 0; i<lim && (c = getchar()) != EOF && c != '\n'; ++i) s[i] = c;
- s[i] = '\0';
- while (c != EOF && c != '\n') c = getchar();
- return i;
- }
- int sze_atoi(char s[]) {
- int i, n = 0;
- for (i = 0; s[i] >= '0' && s[i] <= '9'; ++i)
- n = 10 * n + s[i] - '0';
- return n;
- }
- void main() {
- char p1[3], p2[3], mezo[MAX + 1];
- int i, j, rowCount, colCount, map[ROW * 2 + 2][COL * 2 + 2], playerchanger, vege, mezoOk, sor = 0, oszlop = 0;
- printf("Hello! Please enter the initials of the first player. (e.g. \"AT\" for Alan Turing)\n");
- sze_getline(p1, 3);
- printf("Please enter the initials of the second player.\n");
- sze_getline(p2, 3);
- printf("1. jatekos: %s\n", p1);
- printf("2. jatekos: %s\n", p2);
- colCount = 1;
- rowCount = 65;
- //mapgenerator
- for (i = 0; i < ROW * 2 + 2; i++) { //sorok
- for (j = 0; j < COL * 2 + 2; j++) { //sorok elemei
- if (i == 0) {
- if (j == 0) {
- map[i][j] = 32;
- }
- else if (j % 2 == 0) {
- map[i][j] = colCount;
- colCount++;
- }
- else map[i][j] = 32;
- }
- else if (j == 0) {
- if (i % 2 == 0) {
- map[i][j] = rowCount;
- rowCount++;
- }
- else map[i][j] = 32;
- }
- else if (i % 2 == 1 && j % 2 == 1) {
- map[i][j] = 43;
- }
- else map[i][j] = 32;
- }
- printf("\n");
- }
- printf("\n");
- vege = 0;
- playerchanger = 0;
- do {
- //maprajz
- for (i = 0; i < ROW * 2 + 2; i++) {
- for (j = 0; j < COL * 2 + 2; j++) {
- if (j == 0 && i == 0) { //bal felső térköz
- printf("%c", map[i][j]);
- }
- else if (i == 0 && j % 2 == 0) { // oszlopok sorszámai
- printf("%c%d", 32, map[i][j]);
- }
- else if (j == 0 && i % 2 == 0) { // sorok betüjelei
- printf("%c%c", map[i][j], 32);
- }
- else if (i % 2 == 1 && j % 2 == 0) { //vízszintes falak
- printf("%c%c", map[i][j], map[i][j]);
- }
- else if (i != 0 && i % 2 == 0 && j % 2 == 0) { //Mezők ahol a játékos nevek lesznek
- if (map[i][j] == 32) {
- printf("%c%c", map[i][j], map[i][j]); //ha üres, 2 szóköz
- }
- else printf("%s", map[i][j]); //ha foglalt, p1 v. p2
- }
- else printf("%c", map[i][j]);
- }
- printf("\n");
- }
- if (playerchanger == 0) { // Ha p1 jön
- do {
- printf("%s, please give a row, column and direction separated by spaces.\n", p1);
- sze_getline(mezo, MAX+1); // Lépés bekérése
- //lépés helyességének ellenőrzése
- mezoOk = 1; //alap esetben jó a mező
- if (mezo[3] == 32 && mezo[1] == 32) { // ha az oszlop index 1 jegyű
- if (mezo[0] > 64 && mezo[0] < 91) { //első karakter (sor index) nagybetű-e
- sor = (mezo[0] - 64) * 2; // átalakítás sorszámmá
- if (sor > ROW * 2 + 1 || sor < 1) { //ha a megadott szám a pálya tartományán kívűl esik
- printf("The row must be an uppercase letter between A and %c\n", ROW + 64);
- mezoOk = 0; //nem megfelelő lépés
- }
- }
- else {
- printf("The row must be an uppercase letter between A and %c\n", ROW + 64);
- mezoOk = 0;
- }
- if ((mezo[2] > 48) && (mezo[2] <= 48 + COL)) { //ha eddig jó a bekérés és az oszlop indexe 0 és 9 között van
- oszlop = (mezo[2] - 48) * 2;
- }
- else {
- printf("The column must be a number between 1 and %d.\n", COL);
- mezoOk = 0;
- }
- switch (mezo[4]) {
- case 68: sor++;
- break;
- case 76: oszlop--;
- break;
- case 82: oszlop++;
- break;
- case 85: sor--;
- break;
- default: mezoOk = 0;
- printf("The direction should be the first (uppercase) letter of Left, Right, Up or Down.");
- }
- }
- else if (mezo[1] == 32 && mezo[4]) { // ha kétjegyű az oszlop index
- if (mezo[0] > 64 && mezo[0] < 91) { //első karakter (sor index) nagybetű-e
- sor = (mezo[0] - 64) * 2; // átalakítás sorszámmá
- if (sor > ROW * 2 + 1 || sor < 1) { //ha a megadott szám a pálya tartományán kívűl esik
- printf("The row must be an uppercase letter between A and %c\n", ROW + 64);
- mezoOk = 0; //nem megfelelő lépés
- }
- }
- else {
- printf("The row must be an uppercase letter between A and %c\n", ROW + 64);
- mezoOk = 0;
- }
- if ((mezo[2] > 48) && (mezo[2] <= 48 + COL) && (mezo[3] >= 48) && (mezo[3] <= 48 + COL)) { //ha eddig jó a bekérés és az oszlop indexé
- oszlop = (((mezo[2] - 48) * 10) + (mezo[3] - 48)) * 2;
- if (oszlop > COL * 2 + 1) {
- printf("The column must be a number between 1 and %d.\n", COL);
- mezoOk = 0;
- }
- }
- else {
- printf("The column must be a number between 1 and %d.\n", COL);
- mezoOk = 0;
- }
- switch (mezo[5]) {
- case 68: sor++;
- break;
- case 76: oszlop--;
- break;
- case 82: oszlop++;
- break;
- case 85: sor--;
- break;
- default: mezoOk = 0;
- printf("The direction should be the first (uppercase) letter of Left, Right, Up or Down.");
- }
- }
- if (sor < 1 || oszlop < 1) {
- printf("Bad input\n");
- mezoOk = 0;
- }
- else if ((oszlop <= COL * 2 + 1) && (sor <= ROW * 2 + 1) && (map[sor][oszlop] != 32)) {
- mezoOk = 0;
- printf("The specified wall is already there.\n");
- }
- else {
- if (sor % 2 == 1 && oszlop % 2 == 0) { //ha vízszintes
- if (sor == 1) { // ha vízszintes legfelső
- if ((map[sor + 2][oszlop] != 32) && (map[sor + 1][oszlop - 1] != 32) && (map[sor + 1][oszlop + 1] != 32)) {
- printf("Nice move! It's your turn again.\n");
- map[sor + 1][oszlop] = p1;
- }
- else playerchanger = 1; //nincs bekerített rész, másik játékos jön
- }
- else if (sor == ROW * 2 + 1) { //ha vízszintes legalsó
- if ((map[sor - 2][oszlop] != 32) && (map[sor - 1][oszlop - 1] != 32) && (map[sor - 1][oszlop + 1] != 32)) {
- printf("Nice move! It's your turn again.\n");
- map[sor - 1][oszlop] = p1;
- }
- else playerchanger = 1; //nincs bekerített rész, másik játékos jön
- }
- else { // ha a kettő között
- //ha felfele és lefele is meg vannak a falak
- if ((map[sor - 2][oszlop] != 32) && (map[sor - 1][oszlop - 1] != 32) && (map[sor - 1][oszlop + 1] != 32) && (map[sor + 2][oszlop] != 32) && (map[sor + 1][oszlop - 1] != 32) && (map[sor + 1][oszlop + 1] != 32)) {
- printf("Nice move! It's your turn again.\n");
- map[sor - 1][oszlop] = p1;
- map[sor + 1][oszlop] = p1;
- }
- //ha csak lefele vannak meg a falak
- else if ((map[sor + 2][oszlop] != 32) && (map[sor + 1][oszlop - 1] != 32) && (map[sor + 1][oszlop + 1] != 32)) {
- printf("Nice move! It's your turn again.\n");
- map[sor + 1][oszlop] = p1;
- }
- //ha csak felfele vannak meg a falak
- else if ((map[sor - 2][oszlop] != 32) && (map[sor - 1][oszlop - 1] != 32) && (map[sor - 1][oszlop + 1] != 32)) {
- printf("Nice move! It's your turn again.\n");
- map[sor - 1][oszlop] = p1;
- }
- else playerchanger = 1; //nincs bekerített rész, másik játékos jön
- }
- }
- else if (sor % 2 == 0 && oszlop % 2 == 1) { //ha függőleges
- if (oszlop == 1) { // ha függőleges a tábla baloldalán baloldali
- if ((map[sor][oszlop + 2] != 32) && (map[sor + 1][oszlop + 1] != 32) && (map[sor - 1][oszlop + 1] != 32)) {
- printf("Nice move! It's your turn again.\n");
- map[sor][oszlop + 1] = p1;
- }
- else playerchanger = 1; //nincs bekerített rész, másik játékos jön
- }
- else if (oszlop == COL * 2 + 1) { //ha függőleges a tábla jobboldalán jobboldali
- if ((map[sor][oszlop - 2] != 32) && (map[sor - 1][oszlop - 1] != 32) && (map[sor + 1][oszlop - 1] != 32)) {
- printf("Nice move! It's your turn again.\n");
- map[sor][oszlop - 1] = p1;
- }
- else playerchanger = 1; //nincs bekerített rész, másik játékos jön
- }
- else { // ha a kettő között
- //ha jobbra és balra is megvan minden fal
- if ((map[sor][oszlop - 2] != 32) && (map[sor - 1][oszlop - 1] != 32) && (map[sor + 1][oszlop - 1] != 32) && (map[sor][oszlop + 2] != 32) && (map[sor - 1][oszlop + 1] != 32) && (map[sor + 1][oszlop + 1] != 32)) {
- printf("Nice move! It's your turn again.\n");
- map[sor][oszlop - 1] = p1;
- map[sor][oszlop + 1] = p1;
- }
- //ha csak balra vannak meg a falak
- else if ((map[sor][oszlop - 2] != 32) && (map[sor - 1][oszlop - 1] != 32) && (map[sor + 1][oszlop - 1] != 32)) {
- printf("Nice move! It's your turn again.\n");
- map[sor][oszlop - 1] = p1;
- }
- //ha csak jobbra vannak meg a falak
- else if ((map[sor][oszlop + 2] != 32) && (map[sor - 1][oszlop + 1] != 32) && (map[sor + 1][oszlop + 1] != 32)) {
- printf("Nice move! It's your turn again.\n");
- map[sor][oszlop + 1] = p1;
- }
- else playerchanger = 1; //nincs bekerített rész, másik játékos jön
- }
- }
- }
- } while (mezoOk == 0);
- if (sor > 0 && sor % 2 == 1) {
- map[sor][oszlop] = 45;
- }
- else map[sor][oszlop] = 124;
- }
- else { //2. játékos.
- do {
- printf("%s, please give a row, column and direction separated by spaces.\n", p2);
- sze_getline(mezo, MAX+1); // Lépés bekérése
- //lépés helyességének ellenőrzése
- mezoOk = 1; //alap esetben jó a mező
- if (mezo[3] == 32 && mezo[1] == 32) { // ha az oszlop index 1 jegyű
- if (mezo[0] > 64 && mezo[0] < 91) { //első karakter (sor index) nagybetű-e
- sor = (mezo[0] - 64) * 2; // átalakítás sorszámmá
- if (sor > ROW * 2 + 1 || sor < 1) { //ha a megadott szám a pálya tartományán kívűl esik
- printf("The row must be an uppercase letter between A and %c\n", ROW + 64);
- mezoOk = 0; //nem megfelelő lépés
- }
- }
- else {
- printf("The row must be an uppercase letter between A and %c\n", ROW + 64);
- mezoOk = 0;
- }
- if ((mezo[2] > 48) && (mezo[2] <= 48 + COL)) { //ha eddig jó a bekérés és az oszlop indexe 0 és 9 között van
- oszlop = (mezo[2] - 48) * 2;
- }
- else {
- printf("The column must be a number between 1 and %d.\n", COL);
- mezoOk = 0;
- }
- switch (mezo[4]) {
- case 68: sor++;
- break;
- case 76: oszlop--;
- break;
- case 82: oszlop++;
- break;
- case 85: sor--;
- break;
- default: mezoOk = 0;
- printf("The direction should be the first (uppercase) letter of Left, Right, Up or Down.");
- }
- }
- else if (mezo[1] == 32 && mezo[4]) { // ha kétjegyű az oszlop index
- if (mezo[0] > 64 && mezo[0] < 91) { //első karakter (sor index) nagybetű-e
- sor = (mezo[0] - 64) * 2; // átalakítás sorszámmá
- if (sor > ROW * 2 + 1 || sor < 1) { //ha a megadott szám a pálya tartományán kívűl esik
- printf("The row must be an uppercase letter between A and %c\n", ROW + 64);
- mezoOk = 0; //nem megfelelő lépés
- }
- }
- else {
- printf("The row must be an uppercase letter between A and %c\n", ROW + 64);
- mezoOk = 0;
- }
- if ((mezo[2] > 48) && (mezo[2] <= 48 + COL) && (mezo[3] >= 48) && (mezo[3] <= 48 + COL)) { //ha eddig jó a bekérés és az oszlop indexé
- oszlop = (((mezo[2] - 48) * 10) + (mezo[3] - 48)) * 2;
- if (oszlop > COL * 2 + 1) {
- printf("The column must be a number between 1 and %d.\n", COL);
- mezoOk = 0;
- }
- }
- else {
- printf("The column must be a number between 1 and %d.\n", COL);
- mezoOk = 0;
- }
- switch (mezo[5]) {
- case 68: sor++;
- break;
- case 76: oszlop--;
- break;
- case 82: oszlop++;
- break;
- case 85: sor--;
- break;
- default: mezoOk = 0;
- printf("The direction should be the first (uppercase) letter of Left, Right, Up or Down.");
- }
- }
- if (sor < 1 || oszlop < 1) {
- printf("Bad input\n");
- }
- else if ((oszlop <= COL * 2 + 1) && (sor <= ROW * 2 + 1) && (map[sor][oszlop] != 32)) {
- mezoOk = 0;
- printf("The specified wall is already there.\n");
- }
- else {
- if (sor % 2 == 1 && oszlop % 2 == 0) { //ha vízszintes
- if (sor == 1) { // ha vízszintes legfelső
- if ((map[sor + 2][oszlop] != 32) && (map[sor + 1][oszlop - 1] != 32) && (map[sor + 1][oszlop + 1] != 32)) {
- printf("Nice move! It's your turn again.\n");
- map[sor + 1][oszlop] = p2;
- }
- else playerchanger = 0; //nincs bekerített rész, másik játékos jön
- }
- else if (sor == ROW * 2 + 1) { //ha vízszintes legalsó
- if ((map[sor - 2][oszlop] != 32) && (map[sor - 1][oszlop - 1] != 32) && (map[sor - 1][oszlop + 1] != 32)) {
- printf("Nice move! It's your turn again.\n");
- map[sor - 1][oszlop] = p2;
- }
- else playerchanger = 0; //nincs bekerített rész, másik játékos jön
- }
- else { // ha a kettő között
- //ha felfele és lefele is meg vannak a falak
- if ((map[sor - 2][oszlop] != 32) && (map[sor - 1][oszlop - 1] != 32) && (map[sor - 1][oszlop + 1] != 32) && (map[sor + 2][oszlop] != 32) && (map[sor + 1][oszlop - 1] != 32) && (map[sor + 1][oszlop + 1] != 32)) {
- printf("Nice move! It's your turn again.\n");
- map[sor - 1][oszlop] = p2;
- map[sor + 1][oszlop] = p2;
- }
- //ha csak lefele vannak meg a falak
- else if ((map[sor + 2][oszlop] != 32) && (map[sor + 1][oszlop - 1] != 32) && (map[sor + 1][oszlop + 1] != 32)) {
- printf("Nice move! It's your turn again.\n");
- map[sor + 1][oszlop] = p2;
- }
- //ha csak felfele vannak meg a falak
- else if ((map[sor - 2][oszlop] != 32) && (map[sor - 1][oszlop - 1] != 32) && (map[sor - 1][oszlop + 1] != 32)) {
- printf("Nice move! It's your turn again.\n");
- map[sor - 1][oszlop] = p2;
- }
- else playerchanger = 0; //nincs bekerített rész, másik játékos jön
- }
- }
- else if (sor % 2 == 0 && oszlop % 2 == 1) { //ha függőleges
- if (oszlop == 1) { // ha függőleges a tábla baloldalán baloldali
- if ((map[sor][oszlop + 2] != 32) && (map[sor + 1][oszlop + 1] != 32) && (map[sor - 1][oszlop + 1] != 32)) {
- printf("Nice move! It's your turn again.\n");
- map[sor][oszlop + 1] = p2;
- }
- else playerchanger = 0; //nincs bekerített rész, másik játékos jön
- }
- else if (oszlop == COL * 2 + 1) { //ha függőleges a tábla jobboldalán jobboldali
- if ((map[sor][oszlop - 2] != 32) && (map[sor - 1][oszlop - 1] != 32) && (map[sor + 1][oszlop - 1] != 32)) {
- printf("Nice move! It's your turn again.\n");
- map[sor][oszlop - 1] = p2;
- }
- else playerchanger = 0; //nincs bekerített rész, másik játékos jön
- }
- else { // ha a kettő között
- //ha jobbra és balra is megvan minden fal
- if ((map[sor][oszlop - 2] != 32) && (map[sor - 1][oszlop - 1] != 32) && (map[sor + 1][oszlop - 1] != 32) && (map[sor][oszlop + 2] != 32) && (map[sor - 1][oszlop + 1] != 32) && (map[sor + 1][oszlop + 1] != 32)) {
- printf("Nice move! It's your turn again.\n");
- map[sor][oszlop - 1] = p2;
- map[sor][oszlop + 1] = p2;
- }
- //ha csak balra vannak meg a falak
- else if ((map[sor][oszlop - 2] != 32) && (map[sor - 1][oszlop - 1] != 32) && (map[sor + 1][oszlop - 1] != 32)) {
- printf("Nice move! It's your turn again.\n");
- map[sor][oszlop - 1] = p2;
- }
- //ha csak jobbra vannak meg a falak
- else if ((map[sor][oszlop + 2] != 32) && (map[sor - 1][oszlop + 1] != 32) && (map[sor + 1][oszlop + 1] != 32)) {
- printf("Nice move! It's your turn again.\n");
- map[sor][oszlop + 1] = p2;
- }
- else playerchanger = 0; //nincs bekerített rész, másik játékos jön
- }
- }
- }
- } while (mezoOk == 0);
- if (sor > 0 && sor % 2 == 1) {
- map[sor][oszlop] = 45;
- }
- else map[sor][oszlop] = 124;
- }
- //pálya ellenörző
- } while (vege == 0);
- printf("kileptem\n");
- getchar();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement