Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void Pojazd::proba_zmiany_pasa(int czas, Pojazd tablica[]){ // jezeli hamowanie==1 to znaczy, ze samochod probuje zmienic pas
- predkosc_do_wypisu=predkosc*10;
- if(hamowanie==1){
- if(miejsca_zajete[polozenie.y][polozenie.x+widocznosc+dlugosc+predkosc]!=-1){
- // jezeli samochod zmienia pas i widzi w swojej widocznosci samochod jadacy szybciej to go tu spisuje
- // potem ten samochod odjezdza na wieksza odleglosc niz widocznosc ( bo jest szybszy )
- // funkcja ktora pozwala wrocic do starej predosci jeszcze nie dziala bo ona zaczyna dzialac dalej niz o widocznosc
- // w tym czasie spisywalby sobie smieci jako samochody z przodu
- samochod_z_przodu=miejsca_zajete[polozenie.y][polozenie.x+widocznosc+dlugosc+predkosc]; // jaki samochod jest z przodu?
- if(samochod_z_przodu<0||samochod_z_przodu>8) // samochod jest nizej
- samochod_z_przodu=miejsca_zajete[polozenie.y+60][polozenie.x+widocznosc+dlugosc+predkosc];
- do_hamowania=tablica[samochod_z_przodu].predkosc;
- do_hamowania*=10;
- //////////////////// OBLICZENIA HAMOWANIA Z UDZIALEM FIZYKI //////////////// Opoznienie nie moze byc wieksze niz 40km/h
- float roznica_predkosci=predkosc_do_wypisu-do_hamowania;
- float S=polozenie.x+dlugosc+roznica_predkosci-opoznienie/2;
- if(predkosc_do_wypisu>do_hamowania&&(czas_pojawienia!=210||czy_gra==0)){ // karetka nie hamuje sama z siebie
- if(S>widocznosc+polozenie.x+dlugosc){ // bedzie zderzenie trzeba zwiekszyc sile hamowania
- if(opoznienie<40)
- opoznienie+=5;
- }
- if(predkosc_do_wypisu>=do_hamowania) // Sprawdza, ze jego predkosc jest wieksza i hamuje a nie czy po zahamowaniu bedzie wieksza
- predkosc_do_wypisu-=opoznienie;
- // predkosc nie moze byc mniejsza niz 20
- if(predkosc_do_wypisu<10&&czas_pojawienia!=210) // karetka moze hamowac do 0
- predkosc_do_wypisu=10;
- predkosc=predkosc_do_wypisu/10; // predkosc poruszania sie po mapie
- }
- //////////////////Koniec obliczen z udziałem fizyki////////////////////////////
- // OBSLUGA ZDERZEN NASTAPILO ZDERZENIE, JESLI POLOZENIE.X + POLOZENIE.W+1 !=-1
- if(miejsca_zajete[polozenie.y][polozenie.x+dlugosc-6]==samochod_z_przodu||miejsca_zajete[polozenie.y+60][polozenie.x+dlugosc-6]==samochod_z_przodu){
- // -6 zeby nie patrzyl np starego polozenia samochodu przed zmiana miejsc w tablicy jezeli uderza
- // w samochod ktory zmienia tablice miejsca_zajete po nim a o 6 bo to srednia predkosc
- if(polozenie.x<1250)
- zderzenie_przod=1;
- }
- }
- }
- if(hamowanie==0&&hamowanie_bo_karetka==0){ // wracanie do poprzedniej predkosci
- if(predkosc<stara_predkosc&&predkosc!=0){
- predkosc+=przyspieszenie;
- predkosc_do_wypisu=predkosc*10;
- }
- opoznienie=5; // znowu bedzie zaczynal kolejne hamowanie od tego poziomu
- }
- }
Add Comment
Please, Sign In to add comment