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

Dlaczego pętla nie działa ?

42 Warsaw Coding Academy
0 głosów
177 wizyt
pytanie zadane 4 sierpnia 2017 w JavaScript przez turtelian Obywatel (1,760 p.)
edycja 4 sierpnia 2017 przez turtelian

Witam, mam taki problem jest kod który sprawdza czy jeden z 3 pkt nie znalazł się poza canvas i jeśli tak to przenosi go na 2gi koniec canvas(znika z prawej wychodzi z lewej itp) o to fragmnt kodu który działa(głównie rozchodzi się o pierwszą linijke czyli warunek) :
 

if(this.points[0].x<0 && this.points[1].x<0 && this.points[2].x<0){
			this.x+=VAR.W-Math.min(this.points[0].x,this.points[1].x,this.points[2].x)*0.9
		}else if(this.points[0].x>VAR.W && this.points[1].x>VAR.W && this.points[2].x>VAR.W){
			this.x-=VAR.W-(VAR.W-Math.max(this.points[0].x,this.points[1].x,this.points[2].x))*0.9
		}
		if(this.points[0].y<0 && this.points[1].y<0 && this.points[2].y<0){
			this.y+=VAR.H-Math.min(this.points[0].y,this.points[1].y,this.points[2].y)*0.9
		}else if(this.points[0].y>VAR.H && this.points[1].y>VAR.H && this.points[2].y>VAR.H){
		this.y-=VAR.H-(VAR.H-Math.max(this.points[0].y,this.points[1].y,this.points[2].y))*0.9
	}

Jak widać pkt są elementami w tablicy więc wpadlem na pomysł aby zrobić sprawdzanie w pętli i wyszło mi coś takiego:
 

		for(i==0;i<this.points.length;i++)
		{if(this.points[i].x<0){
			this.x+=VAR.W-Math.min(this.points[0].x,this.points[1].x,this.points[2].x)*0.9
		}else if(this.points[i].x>VAR.W){
			this.x-=VAR.W-(VAR.W-Math.max(this.points[0].x,this.points[1].x,this.points[2].x))*0.9
		}
		if(this.points[i].y<0){
			this.y+=VAR.H-Math.min(this.points[0].y,this.points[1].y,this.points[2].y)*0.9
		}else if(this.points[i].y>VAR.H){
		this.y-=VAR.H-(VAR.H-Math.max(this.points[0].y,this.points[1].y,this.points[2].y))*0.9
	}}

Ale to niestety nie działa , pytanie dlaczego (mam swoje przypuszczenie)? i jak to zrobić w pętli bo jeśli obiekt miałby 1000pkt do sprawdzenia to niestety wypisywanie tego ręcznie by było bez sensu.

PS: jest to fragment z portalu kursownik , robie gry astroids jesli ktos by chcial pełen kod to jest tam dostępny.
PSS: dodam że pętla nie wyrzuca błędu tylko obiekt nie teleportuje się tak jak w przypadku wypisania ręcznego.

PSSS: Podejrzewam że pętla jest źle umieszczona i powinna być wewnątrz warunków if, ma to sens ?

1 odpowiedź

0 głosów
odpowiedź 4 sierpnia 2017 przez Radekol Bywalec (2,880 p.)
W pętli masz i==0; zamiast i=0;
komentarz 4 sierpnia 2017 przez turtelian Obywatel (1,760 p.)
Ok, ale to niczego nie zmienia, w działaniu( a raczej nie działaniu) kodu.
Pytanie dodatkowe czy jest różnica między zapisaniem w tym miejscu i=0 a i==0 ?
1
komentarz 4 sierpnia 2017 przez Radekol Bywalec (2,880 p.)
No w zasadzie to tak. Przy takim zapisie i=0 inicjalizujesz zmienną "i" do wartości 0. Przy takim zapisie i==0 ją porównujesz. Porównywanie zmiennej "i" do 0 w tym przypadku nie ma najmniejszego sensu.
komentarz 4 sierpnia 2017 przez turtelian Obywatel (1,760 p.)
super w sumie racja nie pomyslalem o tym :), ale kod dalej nie działa.
Podejrzewam że pętla jest źle umieszczona i powinna być wewnątrz warunków if, ma to sens ?

Podobne pytania

0 głosów
1 odpowiedź 407 wizyt
pytanie zadane 24 kwietnia 2017 w JavaScript przez wazon Nowicjusz (200 p.)
–2 głosów
1 odpowiedź 290 wizyt
pytanie zadane 28 sierpnia 2017 w JavaScript przez Vorex444 Dyskutant (9,610 p.)
0 głosów
1 odpowiedź 1,916 wizyt
pytanie zadane 22 lipca 2017 w JavaScript przez The Real Slim Stefan Początkujący (450 p.)

93,379 zapytań

142,380 odpowiedzi

322,533 komentarzy

62,734 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...