Я встретился с этой проблемой делая код 3 в линии и в момент игрения он не сохраняет мне последние ходы.
Проблема содержится в момент делания она первый хода, когда первый ход выбирать первое число а именно игра прямо, заканчивается и не позволяет мне продолжать и идет прямо, чтобы спрашивать, если я хочу сыграть снова или нет.
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int main(){
char j1[50];
char j2[50];
char numerost[2][2];
char a,f1,f2;
int i,j,fpre1,fpre2,lugar,n,aux;
do{
{ //jugadores(hecho)
system("cls");
printf("bienvenidoa Tres en Raya.\n");
printf("Presione una tecla para comenzar.\n");
getch();
system("cls");
printf("Indique nombre del jugador 1:");
//gets(j1);
scanf("%s",&j1);
fflush(stdin);
system("cls");
printf("Indique nombre del jugador 2:");
//gets(j2);
scanf("%s",&j2);
fflush(stdin);
system("cls");
}
{ //eleccion ficha jugadores (hecho)
{//jugador 1
do{
printf("%s,elija ficha con la que jugar.\n",j1);
printf("1.X.\n");
printf("2.O.\n");
printf("3.€.\n");
printf("4.$.\n");
printf("5.@.\n");
scanf("%d",&fpre1);
fflush(stdin);
switch(fpre1){
case 1:
f1='X';
fflush(stdin);
break;
case 2:
f1='O';
fflush(stdin);
break;
case 3:
f1='€';
fflush(stdin);
break;
case 4:
f1='$';
fflush(stdin);
break;
case 5:
f1='@';
fflush(stdin);
break;
default: printf("introduzca un numero valido");
break;
}
}
while(0>fpre1||fpre1>5);
printf("%s jugara con %c\n\n",j1,f1);}
{//jugador 2
do{
printf("%s,elija ficha con la que jugar.\n",j2);
printf("1.X.\n");
printf("2.O.\n");
printf("3.€.\n");
printf("4.$.\n");
printf("5.@.\n");
scanf("%d",&fpre2);
fflush(stdin);
switch(fpre2){
case 1:
f2='X';
break;
case 2:
f2='O';
break;
case 3:
f2='€';
break;
case 4:
f2='$';
break;
case 5:
f2='@';
break;
default:
printf("introduzca un numero valido\n");
break;
}
if(fpre1==fpre2){
printf("las fichas no pueden ser iguales.\n\n");
}
else{
continue;
}
}
while(fpre1==fpre2||0>fpre2||fpre2>5);
printf("%s jugara con %c\n\n",j2,f2);}
}
{ //tablero(hecho)
{ //numeros tablero(hecho)
a='1';
for(i=0;i<3;i++){
for(j=0;j<3;j++){
numerost[i][j]=a++;
}
}
}
{ //tablero estructura(hecho)
for(i=0;i<3;i++){
for(j=0;j<3;j++){
if(j<2){
printf(" %c|",numerost[i][j]);
}
else{
printf(" %c",numerost[i][j]);
}
}
if(i<2){
printf("\n---------");
printf("\n");
}
else{
printf("\n");
}
}
}
}
{ //colocacion de fichas
do{
printf("Coloca la ficha.\n");
scanf("%d",&aux);
fflush(stdin);
}while(aux<1||aux>9);
switch(aux){
case'1':
i=0;
j=0;
if(numerost[i][j]==f1||numerost[i][j]==f2){
printf("La casilla esta ocupada.\n");
}
break;
case'2':
i=0;
j=1;
if(numerost[i][j]==f1||numerost[i][j]==f2){
printf("La casilla esta ocupada.\n");
}
break;
case'3':
i=0;
j=2;
if(numerost[i][j]==f1||numerost[i][j]==f2){
printf("La casilla esta ocupada.\n");
}
break;
case'4':
i=1;
j=0;
if(numerost[i][j]==f1||numerost[i][j]==f2){
printf("La casilla esta ocupada.\n");
}
break;
case'5':
i=1;
j=1;
if(numerost[i][j]==f1||numerost[i][j]==f2){
printf("La casilla esta ocupada.\n");
}
break;
case'6':
i=1;
j=2;
if(numerost[i][j]==f1||numerost[i][j]==f2){
printf("La casilla esta ocupada.\n");
}
break;
case'7':
i=2;
j=0;
if(numerost[i][j]==f1||numerost[i][j]==f2){
printf("La casilla esta ocupada.\n");
}
break;
case'8':
i=2;
j=1;
if(numerost[i][j]==f1||numerost[i][j]==f2){
printf("La casilla esta ocupada.\n");
}
break;
case'9':
i=2;
j=2;
if(numerost[i][j]==f1||numerost[i][j]==f2){
printf("La casilla esta ocupada.\n");
}
break;
}
numerost[i][j]=f1;
{ //tablero(hecho)
{ //numeros tablero(hecho)
a='1';
for(i=0;i<3;i++){
for(j=0;j<3;j++){
numerost[i][j]=a++;
}
}
}
{ //tablero estructura(hecho)
for(i=0;i<3;i++){
for(j=0;j<3;j++){
if(j<2){
printf(" %c|",numerost[i][j]);
}
else{
printf(" %c",numerost[i][j]);
}
}
if(i<2){
printf("\n---------");
printf("\n");
}
else{
printf("\n");
}
}
}
}
}
{ //jugar otra vez
printf("¿desea volver a jugar?\n");
printf("1.Si.\n");
printf("2.No.\n");`introducir el código aquí`
scanf("%d",&n);
}
}while(n==1);
}
Я должен допускать, что cometГ - ошибка, не является необходимым она librerГ - string.h
logrГ© способствовать тому, чтобы ты cГіdigo оно функционировало без нее, tenГ-схвати бесконечность ошибок написания, и помни, что, чтобы распределять один carГЎcter, ты это должен манипулировать как цепь, следовательно, переменной, в которую ты это распределяешь, тебя должно будьте быть один array
возможно, что ему не хватает каких-то деталей, которые я не могу воспринимать с моего мобильного телефона, но acГЎ я оставляю это тебе:
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
int main(){
char j1[50];
char j2[50];
char numerost[2][2];
char a[1],f1[1],f2[1];
int i,j,fpre1,fpre2,lugar,n,aux;
do{
{ //jugadores(hecho)
system("cls");
printf("bienvenido a Tres en Raya.\n");
printf("Presione una tecla para comenzar.\n");
getch();
system("cls");
printf("Indique nombre del jugador 1:");
//gets(j1);
scanf("%s", j1);
fflush(stdin);
system("cls");
printf("\nIndique nombre del jugador 2:");
//gets(j2);
scanf("%s", j2);
fflush(stdin);
system("cls");
}
{ //eleccion ficha jugadores (hecho)
{//jugador 1
do{
printf("\n%s,elija ficha con la que jugar.\n",j1);
printf("1.X.\n");
printf("2.O.\n");
printf("3.&.\n");
printf("4.$.\n");
printf("5.@.\n");
scanf("%d",&fpre1);
fflush(stdin);
switch(fpre1){
case 1:
f1[1]='X';
fflush(stdin);
break;
case 2:
f1[1]='O';
fflush(stdin);
break;
case 3:
f1[1]='&';
fflush(stdin);
break;
case 4:
f1[1]=';
fflush(stdin);
break;
case 5:
f1[1]='@';
fflush(stdin);
break;
default: printf("introduzca un numero valido");
break;
}
}
while(0>fpre1||fpre1>5);
printf("%s jugara con %c\n\n",j1,f1[1]);}
{//jugador 2
do{
printf("%s,elija ficha con la que jugar.\n",j2);
printf("1.X.\n");
printf("2.O.\n");
printf("3.&.\n");
printf("4.$.\n");
printf("5.@.\n");
scanf("%d",&fpre2);
fflush(stdin);
switch(fpre2){
case 1:
f2[1]='X';
break;
case 2:
f2[1]='O';
break;
case 3:
f2[1]='&';
break;
case 4:
f2[1]=';
break;
case 5:
f2[1]='@';
break;
default:
printf("introduzca un numero valido\n");
break;
}
if(fpre1==fpre2){
printf("las fichas no pueden ser iguales.\n\n");
}
else{
continue;
}
}
while(fpre1==fpre2||0>fpre2||fpre2>5);
printf("%s jugara con %c\n\n",j2,f2[1]);}
}
{ //tablero(hecho)
{ //numeros tablero(hecho)
a[1]='1';
for(i=0;i<3;i++){
for(j=0;j<3;j++){
numerost[i][j]=a[i];
}
}
}
{ //tablero estructura(hecho)
for(i=0;i<3;i++){
for(j=0;j<3;j++){
if(j<2){
printf(" %c|",numerost[i][j]);
}
else{
printf(" %c",numerost[i][j]);
}
}
if(i<2){
printf("\n---------");
printf("\n");
}
else{
printf("\n");
}
}
}
}
{ //colocacion de fichas
do{
printf("Coloca la ficha.\n");
scanf("%d",&aux);
fflush(stdin);
}while(aux<1||aux>9);
switch(aux){
case 1:
i=0;
j=0;
if(numerost[i][j]==f1[1]||numerost[i][j]==f2[1]){
printf("La casilla esta ocupada.\n");
}
break;
case 2:
i=0;
j=1;
if(numerost[i][j]==f1[1]||numerost[i][j]==f2[1]){
printf("La casilla esta ocupada.\n");
}
break;
case 3:
i=0;
j=2;
if(numerost[i][j]==f1[1]||numerost[i][j]==f2[1]){
printf("La casilla esta ocupada.\n");
}
break;
case 4:
i=1;
j=0;
if(numerost[i][j]==f1[1]||numerost[i][j]==f2[1]){
printf("La casilla esta ocupada.\n");
}
break;
case 5:
i=1;
j=1;
if(numerost[i][j]==f1[1]||numerost[i][j]==f2[1]){
printf("La casilla esta ocupada.\n");
}
break;
case 6:
i=1;
j=2;
if(numerost[i][j]==f1[1]||numerost[i][j]==f2[1]){
printf("La casilla esta ocupada.\n");
}
break;
case 7:
i=2;
j=0;
if(numerost[i][j]==f1[1]||numerost[i][j]==f2[1]){
printf("La casilla esta ocupada.\n");
}
break;
case 8:
i=2;
j=1;
if(numerost[i][j]==f1[1]||numerost[i][j]==f2[1]){
printf("La casilla esta ocupada.\n");
}
break;
case 9:
i=2;
j=2;
if(numerost[i][j]==f1[1]||numerost[i][j]==f2[1]){
printf("La casilla esta ocupada.\n");
}
break;
}
numerost[i][j]=f1[1];
{ //tablero(hecho)
{ //numeros tablero(hecho)
a[1]= '1';
for(i=0;i<3;i++){
for(j=0;j<3;j++){
numerost[i][j]=a[i];
}
}
}
{ //tablero estructura(hecho)
for(i=0;i<3;i++){
for(j=0;j<3;j++){
if(j<2){
printf(" %c|",numerost[i][j]);
}
else{
printf(" %c",numerost[i][j]);
}
}
if(i<2){
printf("\n---------");
printf("\n");
}
else{
printf("\n");
}
}
}
}
}
{ //jugar otra vez
printf("¿desea volver a jugar?\n");
printf("1.Si.\n");
printf("2.No.\n");
scanf("%d",&n);
}
}while(n==1);
}