• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Warunek do pętli C++

0 głosów
907 wizyt
pytanie zadane 3 czerwca 2018 w C i C++ przez MAJ0R Obywatel (1,130 p.)

Witam otóż mam problem z wymyśleniem warunku.Posiadam program który aktualizuje współrzędne 5 statków przy użyciu struktur na powierzchni 1024x768 i na bieżąco je wyświetla.Wszystko dzieje się w pętli i nie mam kompletnie pomysłu na warunek do tej pętli żeby to nie wyglądało prymitywnie.Potrzebuję warunku do pętli(myślę że najlepiej while) który przestanie się wykonywać gdy wszystkie statki wylecą poza mapę.(Zamiennik za tą pętlę for z i<1024)

Kod poniżej:

 

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
struct spaceship_prop{
int x=0;
int y=0;
};
int main(){
spaceship_prop ship[5];
srand(time(NULL));
for(int i=0;i<5;i++){
ship[i].x= rand()%1024+1;
ship[i].y = rand()%768+1;
}
int new_position_x[5];
int new_position_y[5];
for(int i=0;i<1024;i++){
    for(int i=0;i<5;i++){
    new_position_x[i]= rand()%4;
    new_position_y[i] =rand()%4;
    ship[i].x +=new_position_x[i];
    ship[i].y +=new_position_y[i];
    for(int j=0;j<5;j++){
if(ship[j].x<1024 && ship[j].y< 768)
            cout<<"X_S"<<j+1<<" : "<<ship[j].x<<" | "<<" Y_S"<<j+1<<" : "<<ship[j].y<<endl;
        else
            cout<<"X_S"<<j+1<<" : "<<"out of screen"<<" | "<<" Y_S"<<j+1<<" : "<<"out of screen"<<endl;
        }
        }
    }



 

1
komentarz 3 czerwca 2018 przez niezalogowany
komentarz 3 czerwca 2018 przez MAJ0R Obywatel (1,130 p.)
Dziękuję za upomnienie.

2 odpowiedzi

+1 głos
odpowiedź 3 czerwca 2018 przez niezalogowany

Może tak:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <ctime>

using namespace std;

struct spaceship_prop {
	int x = 0;
	int y = 0;
};

int main() {
	spaceship_prop ship[5];
	srand(time(NULL));

	for (int i = 0; i<5; i++) {
		ship[i].x = rand() % 1024 + 1;
		ship[i].y = rand() % 768 + 1;
	}

	int new_position_x[5];
	int new_position_y[5];

	while (true)
	{
		for (int i = 0; i < 5; i++) {
			new_position_x[i] = rand() % 4;
			new_position_y[i] = rand() % 4;
			ship[i].x += new_position_x[i];
			ship[i].y += new_position_y[i];
		}

		int ile_poza_zasiegiem = 0;

		for (int j = 0; j<5; j++) {
			if (ship[j].x < 1024 && ship[j].y < 768)
			{
				cout << "X_S" << j + 1 << " : " << ship[j].x << " | " << " Y_S" << j + 1 << " : " << ship[j].y << endl;
			}
			else
			{
				cout << "X_S" << j + 1 << " : " << "out of screen" << " | " << " Y_S" << j + 1 << " : " << "out of screen" << endl;
				ile_poza_zasiegiem++;
			}
		}

		if (ile_poza_zasiegiem == 5) {
			break;
		}
	} 

	cout << "Wszystkie statki gdzieś poleciały sir ;/\n";
}

Albo tak:

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <algorithm>

using namespace std;

struct spaceship_prop {
	int x = 0;
	int y = 0;
};

bool in_range(const spaceship_prop& ship)
{
	return ship.x < 1024 && ship.y < 768;
}

int main() {
	spaceship_prop ship[5];
	srand(time(NULL));

	for (int i = 0; i<5; i++) {
		ship[i].x = rand() % 1024 + 1;
		ship[i].y = rand() % 768 + 1;
	}

	do
	{
		for (int i = 0; i < 5; i++) {
			ship[i].x += rand() % 4;
			ship[i].y += rand() % 4;

			if (in_range(ship[i]))
			{
				cout << "X_S" << i + 1 << " : " << ship[i].x << " | " << " Y_S" << i + 1 << " : " << ship[i].y << endl;
			}
			else
			{
				cout << "X_S" << i + 1 << " : " << "out of screen" << " | " << " Y_S" << i + 1 << " : " << "out of screen" << endl;
			}
		}

	} while (any_of(begin(ship), end(ship), in_range));

	cout << "Wszystkie statki gdzieś poleciały sir ;/\n";
}
komentarz 3 czerwca 2018 przez MAJ0R Obywatel (1,130 p.)
Dzięki
0 głosów
odpowiedź 3 czerwca 2018 przez 10kw10 Pasjonat (22,880 p.)

Ten kod juz wyglada prymitywnie ;d

Moze napisz funkcje, ktora sprawdzi czy wszystkie sa poza. Cos w stylu

while(!areShipsOutOfScreen())

 

Podobne pytania

+1 głos
3 odpowiedzi 666 wizyt
pytanie zadane 13 stycznia 2021 w C# przez kubaa322 Użytkownik (710 p.)
0 głosów
3 odpowiedzi 346 wizyt
pytanie zadane 27 listopada 2015 w C i C++ przez thekibi27 Bywalec (2,110 p.)
0 głosów
1 odpowiedź 501 wizyt
pytanie zadane 9 lutego 2023 w C i C++ przez Mefer Nowicjusz (140 p.)

93,735 zapytań

142,671 odpowiedzi

323,294 komentarzy

63,297 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...