Guest User

Untitled

a guest
May 22nd, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.74 KB | None | 0 0
  1. void Pojazd::proba_zmiany_pasa(int czas, Pojazd tablica[]){ // jezeli hamowanie==1 to znaczy, ze samochod probuje zmienic pas
  2.  
  3. predkosc_do_wypisu=predkosc*10;
  4.  
  5. if(hamowanie==1){
  6. if(miejsca_zajete[polozenie.y][polozenie.x+widocznosc+dlugosc+predkosc]!=-1){
  7. // jezeli samochod zmienia pas i widzi w swojej widocznosci samochod jadacy szybciej to go tu spisuje
  8. // potem ten samochod odjezdza na wieksza odleglosc niz widocznosc ( bo jest szybszy )
  9. // funkcja ktora pozwala wrocic do starej predosci jeszcze nie dziala bo ona zaczyna dzialac dalej niz o widocznosc
  10. // w tym czasie spisywalby sobie smieci jako samochody z przodu
  11. samochod_z_przodu=miejsca_zajete[polozenie.y][polozenie.x+widocznosc+dlugosc+predkosc]; // jaki samochod jest z przodu?
  12. if(samochod_z_przodu<0||samochod_z_przodu>8) // samochod jest nizej
  13. samochod_z_przodu=miejsca_zajete[polozenie.y+60][polozenie.x+widocznosc+dlugosc+predkosc];
  14.  
  15. do_hamowania=tablica[samochod_z_przodu].predkosc;
  16. do_hamowania*=10;
  17. //////////////////// OBLICZENIA HAMOWANIA Z UDZIALEM FIZYKI //////////////// Opoznienie nie moze byc wieksze niz 40km/h
  18.  
  19. float roznica_predkosci=predkosc_do_wypisu-do_hamowania;
  20.  
  21. float S=polozenie.x+dlugosc+roznica_predkosci-opoznienie/2;
  22.  
  23. if(predkosc_do_wypisu>do_hamowania&&(czas_pojawienia!=210||czy_gra==0)){ // karetka nie hamuje sama z siebie
  24. if(S>widocznosc+polozenie.x+dlugosc){ // bedzie zderzenie trzeba zwiekszyc sile hamowania
  25. if(opoznienie<40)
  26. opoznienie+=5;
  27. }
  28. if(predkosc_do_wypisu>=do_hamowania) // Sprawdza, ze jego predkosc jest wieksza i hamuje a nie czy po zahamowaniu bedzie wieksza
  29. predkosc_do_wypisu-=opoznienie;
  30.  
  31. // predkosc nie moze byc mniejsza niz 20
  32.  
  33. if(predkosc_do_wypisu<10&&czas_pojawienia!=210) // karetka moze hamowac do 0
  34. predkosc_do_wypisu=10;
  35.  
  36.  
  37. predkosc=predkosc_do_wypisu/10; // predkosc poruszania sie po mapie
  38. }
  39.  
  40.  
  41. //////////////////Koniec obliczen z udziałem fizyki////////////////////////////
  42.  
  43. // OBSLUGA ZDERZEN NASTAPILO ZDERZENIE, JESLI POLOZENIE.X + POLOZENIE.W+1 !=-1
  44. if(miejsca_zajete[polozenie.y][polozenie.x+dlugosc-6]==samochod_z_przodu||miejsca_zajete[polozenie.y+60][polozenie.x+dlugosc-6]==samochod_z_przodu){
  45. // -6 zeby nie patrzyl np starego polozenia samochodu przed zmiana miejsc w tablicy jezeli uderza
  46. // w samochod ktory zmienia tablice miejsca_zajete po nim a o 6 bo to srednia predkosc
  47. if(polozenie.x<1250)
  48. zderzenie_przod=1;
  49. }
  50. }
  51.  
  52.  
  53. }
  54.  
  55.  
  56. if(hamowanie==0&&hamowanie_bo_karetka==0){ // wracanie do poprzedniej predkosci
  57.  
  58.  
  59. if(predkosc<stara_predkosc&&predkosc!=0){
  60. predkosc+=przyspieszenie;
  61. predkosc_do_wypisu=predkosc*10;
  62. }
  63.  
  64. opoznienie=5; // znowu bedzie zaczynal kolejne hamowanie od tego poziomu
  65. }
  66. }
Add Comment
Please, Sign In to add comment