Spielprogrammierung Test 1

Was wissen Sie alles über die Spielprogrammierung mit lite-C? Finden Sie es heraus! Und noch ein Hinweis: Schauen Sie sich die Code-Abschnitte genau an. Manchmal tut der Code etwas anderes, als es auf den ersten Blick scheint!

Ihr Name: (für Zertifikat & High-Score)

1. Welche der folgenden Variablendefinitionszeilen produziert einen Syntaxfehler?

1 var _9_lives, _7_lives = 7;
2 var nine_lives = 9, seven_lives = 7;
3 var NineLives = 0
4 var NINELIVES;


2. Welchen Wert bekommt die Variable x im folgenden Programm?


function foo(a,b)
{
   return (a + b);
}

void main()
{
   var x = foo(3,foo(1,2));
}


1 0
2 3
3 6
4 Keinen - das Skript hat einen Syntaxfehler.


3. Was passiert im folgenden Programm? beep() ist eine Engine-Funktion, die einen Piepton abspielt.


function foo()
{
   beep();
   return(1);
}

void main()
{
   on_a = foo();
}

1 Wenn ich [A] drücke, wird das Programm piepsen und dann enden.
2 Wenn immer ich [A] drücke, wird das Programm piepsen.
3 Das Programm wird beim Start piepsen und abstürzen, wenn ich [A] drücke.
4 Das Programm wird beim Start piepsen und dann enden.


4. Was muss man ins Skript schreiben, damit das Bild "image.tga" auf dem Bildschirm erscheint?

1 BMAP* image = "image.tga";
2 PANEL* p = { bmap = "image.tga"; flags = SHOW; }
3 BMAP* image; PANEL* p = { bmap = image; flags = SHOW; }
4 BMAP* image = "image.tga"; PANEL* p = { bmap = image; }


5. Ein Panel-Knopf reagiert nicht auf Mausklick. Was könnte die Ursache sein?

1 Der Knopf ist nicht komplett innerhalb des Panels.
2 Das Panel überlappt ein anderes mit dem gleichen layer-Wert.
3 Dem Knopf wurde keine Funktion zugewiesen.
4 Alle der obigen Antworten.
5 Keine der obigen Antworten.


6. Diese einfache Aktion lässt das Programm 'einfrieren'. Warum?


action rotate_entity()
{
  while (1)
  {
    my.pan += 3 * sin(time_step);
  }
  wait (1);
}

1 Man kann sin(time_step) nicht innerhalb einer Schleife verwenden.
2 Die Aktion wurde keiner Entity zugewiesen.
3 Die Aktion lässt das Programm nicht einfrieren.
4 Keine der obigen Antworten ist richtig.
5 Alle der obigen Antworten sind richtig.


7. Sie ändern im Skript den Wert einer Variablen, aber beim Start des Programms zeigt die Variable den alten Wert. Was könnte die Ursache sein?

1 Sie haben eine andere Version des Skripts in einem anderen Ordner editiert.
2 Der Wert der Variablen wird noch irgendwo anders in Ihrem Code gesetzt.
3 Ihr Skript lädt einen Spielstand, der noch vor dem Ändern gespeichert wurde.
4 Alle der obigen Antworten.
5 Keine der obigen Antworten.


8. Ein Panel mit pos_x = 100 und pos_y = 200 hat eine Button-Definition, die mit (50, 30, ... beginnt. Wie viele Pixel ist der Button von der oberen linken Ecke des Engine-Fensters entfernt?

1 150, 230.
2 50, 30.
3 300, 80.
4 100, 200.


9. Das OVERLAY-Flag bei Panels

1 - ist die einzige Methode, Teile des Panel-Hintergrunds transparent zu machen.
2 - definiert den Transparenzverlauf des Panel-Hintergrunds.
3 - beeinflusst auch die Button-Bilder auf dem Panel.
4 - lässt das Panel über allen anderen Panels erscheinen.


10. Das digits-Element kann folgendes darstellen:

1 Werte globaler Variablen.
2 Text.
3 Bilder von einer Bitmap.
4 Alles oben erwähnte.
5 Nichts oben erwähntes.


11. Um eine Entity aufwärts zu bewegen

1 - erhöht man ihre z Koordinate.
2 - bewegt man sie in Richtung ihres Tilt Winkels.
3 - muss man die c_move Funktion benutzen.
4 - setzt man ihre Winkel auf 0 und erhöht die z Koordinate.


12. Die folgende Anweisung: level_load(NULL);

1 - lädt ein Level mit dem Namen "NULL".
2 - erlaubt das Aufrufen der ent_create Funktion, ohne einen Level zu erstellen.
3 - lädt einen Level, der noch nicht existiert und noch erstellt werden muss.
4 - produziert eine Fehlermeldung.


13. "Billboards" nennt man Sprites, die aufrecht stehen und stets zur Kamera hin ausgerichtet sind. Wir erzeugen sie folgendermaßen:

1 Wir plazieren sie im Level mit allen Winkeln auf 0.
2 Wir geben ihrem roll-Winkel einen kleinen Wert (z.B. 0.1).
3 Wir geben ihnen einen pan- und tilt-Winkel, der zur Kamera zeigt.
4 Nur Gamestudio Pro unterstützt Billboards.


14. Eine Entity im Level kann gesteuert werden:

1 Mit einer Aktion, die ihr zugewiesen wurde.
2 Mit einem Pointer.
3 Durch eine Funktion einer anderen Entity.
4 Alle obigen Antworten sind richtig.
5 Keine der obigen Antworten ist richtig.


15. Hört man beim Aufrufen der folgenden Funktion einen Piepton?


function compare_values( )
{
  var a = 1.99;
  var b = 2;
  if (a = b)
    beep( );
}

1 Ja - var ist nicht genau, so dass für den Computer 1.99 und 2 gleich sind.
2 Nein - a und b sind verschieden.
3 Ja - die if (..) Bedingung ist wahr.
4 Nein - die if (..) Bedingung ist "falsch".


16. Um herauszufinden, ob der Player noch lebt und noch Munition hat, benutzt man folgenden Code:

1 if ((health > 0) && (ammo > 0)) ...
2 if ((health > 0) || (ammo > 0)) ...
3 if ((health > 0) & (ammo > 0)) ...
4 if ((health > 0) | (ammo > 0)) ...
5 Alle der obigen Zeilen können benutzt werden.
6 Keine der obigen Zeilen kann benutzt werden.


17. Eine Kamera, die abwärts blickt (Vogelperspektive), benötigt:

1 Einen positiven pan-Winkel.
2 Einen negativen tilt-Winkel.
3 Einen positiven tilt-Winkel.
4 Das ISOMETRIC Flag.


18. Die Anweisung: c_move (me,nullvector,vector(5*time_step,0,0),GLIDE);

1 - bewegt die Entity vorwärts.
2 - bewegt die Entity in Richtung der X-Achse.
3 - lässt die Entity am Boden entlang gleiten.
4 - addiert 5*time_step zur augenblicklichen Geschwindigkeit der Entity.


19. Die folgende Aktion:


action animate_guard( )
{
  var percentage = 0;
  while(1)
  {
    ent_animate(me,"stand",percentage,0);
    wait(1);
  }
}

1 Animiert den Actor in einer Schleife.
2 Spielt eine Einmal-Animation ab.
3 Hat einen Syntaxfehler.
4 Tut gar nichts.


20. Anders als eine lokale Variable, kann man eine globale Variable

1 - mit der [Tab] Taste ändern.
2 - mit dem Debugger beobachten.
3 - in allen Script-Funktionen verwenden.
4 Alle obigen Antworten sind richtig.
5 Keine der obigen Antworten ist richtig.

 

s