summaryrefslogtreecommitdiffstats
path: root/main.cpp
diff options
context:
space:
mode:
authorJoursoir <chat@joursoir.net>2021-03-08 23:28:31 +0000
committerJoursoir <chat@joursoir.net>2021-03-08 23:28:31 +0000
commitd987781b24c6f505a61a01794b6bc76b07c9b25d (patch)
tree7f6e5a971d9b3cb19746c79780deff364b5dcde9 /main.cpp
parentac3ab1206a7bddec5312bf974479853429426dfa (diff)
downloadascii-road-d987781b24c6f505a61a01794b6bc76b07c9b25d.tar.gz
ascii-road-d987781b24c6f505a61a01794b6bc76b07c9b25d.tar.bz2
ascii-road-d987781b24c6f505a61a01794b6bc76b07c9b25d.zip
add infinity vehicle ride
Diffstat (limited to 'main.cpp')
-rw-r--r--main.cpp48
1 files changed, 32 insertions, 16 deletions
diff --git a/main.cpp b/main.cpp
index ca406f4..e5a781e 100644
--- a/main.cpp
+++ b/main.cpp
@@ -39,15 +39,6 @@ void draw_background()
mvprintw(total_rows-3, 40, " | |");
mvprintw(total_rows-2, 40, " | |");
mvprintw(total_rows-1, 40, "______// \\\\");
-
- refresh();
-}
-
-Vehicle *get_random_vehicle(int y, int x)
-{
- Vehicle *car;
- car = new Vehicle(rand() % veh_types_max, y, x);
- return car;
}
int main(int argc, char *argv[])
@@ -63,24 +54,49 @@ int main(int argc, char *argv[])
getmaxyx(stdscr, total_rows, total_cols);
Vehicle *car = 0;
+ struct ll_vehicle *ptr_first = new struct ll_vehicle(0, 0);
+ struct ll_vehicle *ptr;
+ int wait_move = 0;
for(;;)
{
clear();
draw_background();
- if(!car)
- car = get_random_vehicle(total_rows, -1);
+ ptr = ptr_first;
+ while(ptr)
+ {
+ car = ptr->data;
+ if(!car) {
+ if(wait_move > 0)
+ break;
- car->MoveRight();
- if(!(car->Draw(total_cols))) {
- delete car;
- car = 0;
+ ptr->data = new Vehicle(
+ rand() % veh_types_max, total_rows, -1);
+ car = ptr->data;
+ wait_move = car->GetLength() + 3 + rand() % 10;
+
+ ptr->next = new struct ll_vehicle(0, 0);
+ }
+
+ car->MoveRight();
+ if(!car->Draw(total_cols)) {
+ ptr = ptr->next;
+ delete car;
+ delete ptr_first;
+ ptr_first = ptr;
+ continue;
+ }
+
+ ptr = ptr->next;
}
+ if(wait_move > 0)
+ wait_move--;
+
refresh();
nanosleep(&my_timer, NULL);
}
-
+
endwin();
return 0;
}