Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[pytanie]c++(devc++)


Rekomendowane odpowiedzi

Opublikowano

witam.pracuje nad programem i zatrzymałem się w pewnym momencie.nie wiem jak zrobić aby uzyskać takie coś:

1) gdy podam x i y takie samo np 10x10 rysuje tablice normalnie ale gdy podam 10x12(czyli 2 inne wymiary)program przestaje działać

2)jak w ten kod wrzucić przeciwnika aby poruszał się losowo po tablicy podanej przez uzytkownika?

 

 

oto kod:

#include<iostream>
#include<conio.h>
#include<windows.h>
using namespace std;

int main()
{
		int x,y;
		char klawisz;
		cout<<"Podaj x: ";
		cin>>x;
		cout<<"Podaj y: ";
		cin>>y;
		int p_x, p_y;
		p_x=x/2; 
		p_y=y/2;
		char tab[x][y];
		for (int i=0;i<x;i++)
			for(int j=0;j<y;j++)
			tab[i][j]=' ';
			
		for (int i=0;i<x;i++)
			for(int j=0;j<y;j++)
			{
			tab[0][i]='X';
			tab[x-1][i]='X';
			tab[j][0]='X';
			tab[j][y-1]='X';
	   		}
	   		do
			{
	   		system("cls");
	   	cout<<"Aby poruszyc sie w gore nacisnij klawisz w"<<endl;
		cout<<"Aby poruszyc sie w dol nacisnij klawisz s"<<endl;
		cout<<"Aby poruszyc sie w lewo nacisnij klawisz a"<<endl;
		cout<<"Aby poruszyc sie w prawo nacisnij klawisz d"<<endl;
		cout<<endl;
		cout<<endl;
		cout<<endl;
	   	for (int i=0;i<x;i++)
	   	{
	   		for (int j=0;j<y;j++)
	   		if(i==p_x && j==p_y) cout<<"X";
	   		else cout<<tab[i][j];
	   		cout<<endl;
	   	}
	   	cout<<endl;
	   	cout<<endl;
	  	cout<<endl;
	   	cout<<endl;
		cout<<"ABY ZAKONCZYC PROGRAM NACISNIJ PRZYCISK  k"<<endl;
	   	klawisz=getch();
	   	if(((klawisz==119) || (klawisz==87))  && (p_x!=1))
		   {
		   p_x--;
			}
	   	if(((klawisz==115) || (klawisz==83)) && (p_x!=x-2)) 
		   {
		   p_x++;
			}
	   	if(((klawisz==97) || (klawisz==65)) && (p_y!=1)) 
		   {
		   p_y--;
			}
	   	if(((klawisz==100) || (klawisz==68)) && (p_y!=y-2))
		   {
		    p_y++;
			}
	   }
	   while (klawisz!='k');
	getch();
}

pozdrawiam i licze na szybką pomoc

 

Opublikowano

tab[0]='X';

tab[x-1]='X';

tab[j][0]='X';

tab[j][y-1]='X';

Pomyliłeś indeksy (po y iterujesz j, a po x iterujesz i a tu jest na odwrót). Przy tablicy z takimi samymi wymiarami będzie ok, ale jak są różne to możesz wyjść poza zakres.

np x=10, y=12 tak jak podałeś

jest 120 elemtów. 0-119

[0] to indeks maksymalnie 9 (i = 9)

[x-1] to indeks maksymalnie 117 (i=9) [(x-1)*12+i]

[j][0] to indeks maksymalnie 132 (j=11) [j*12] <-- tu wychodzi poza zakres

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...