Code:
while(1)
	{
		while(time < 12*16) // 16 ticks = 1 Sekunde
		{
			time += time_step;
			wait(1);
		}
		sky_1.flags2 &= ~SHOW;
		sky_2.flags2 |= SHOW;
		time = 0;
		while(time < 12*16)
		{
			time += time_step;
			wait(1);
		}
		sky_1.flags2 |= SHOW;
		sky_2.flags2 &= ~SHOW;
		wait(1); 
	}



vor dem letzen wait(1); fehlt ein time = 0;, sonst blinkt der Nachthimmel(sky_1) nur kurz auf, nicht für 12 Sekunden, wenn ich mir erlauben darf dich zu verbessern.
Logische erklärung: time ist am Ende der Schleife immer noch 12*16, daher wird die erste while(time < 12*16) Schleife ausgelassen, der sky_1 ist ein Tick sichtbar, dann wird der Himmel auf sky_2 gestellt und time auf 0 gestellt.

richtiger Code:
Code:
void do_sky()
{
	var time = 0;
	sky_1.flags2 |= SHOW;
	sky_2.flags2 &= ~SHOW;
	while(1)
	{
		while(time < 12*16) // 16 ticks = 1 Sekunde
		{
			time += time_step;
			wait(1);
		}
		sky_1.flags2 &= ~SHOW;
		sky_2.flags2 |= SHOW;
		time = 0;
		while(time < 12*16)
		{
			time += time_step;
			wait(1);
		}
		sky_1.flags2 |= SHOW;
		sky_2.flags2 &= ~SHOW;
		time = 0; //<-- das entscheidende Stück
		wait(1);
		
	}
}