Robso661, Deinen Fragen nach zu urteilen, felhlen Dir noch einige Grundlagen, um so ein Spiel zu schreiben.

Dieses sind die entscheidenden Zeilen, in denen die Steine benannt sind, die getauscht werden:

"
temp_stone=ptr_for_handle(spielfeld[feldposition]);
temp_stone2=ptr_for_handle(spielfeld[feldposition2]);

[...]
spielfeld[feldposition2]=handle(temp_stone);
spielfeld[feldposition]=handle(temp_stone2);
"

Das geschieht über Pointer und Handle.

Ein Handle ist eine für jede Entity einzigartige Zahl, die die Engine jeder Entity bei Spielstart zuweist. Dabei ist völlig unerheblich, welche Zahl das ist, wichtig ist nur, dass man weiss, dass man darüber eindeutig ein Objekt(= Entity) wiederfinden kann.

Ein Pointer ist ein Zeiger auf ein Objekt (Es gibt auch noch andere Zeiger, aber das macht es zu kompliziert jetzt.). Wenn man sich vorstellt, dass beim Fangenspielen, der Fänger immer eine rote Mütze aufgesetzt bekommt. Diese Mütze hat dann ja nicht die ganze Zeit ein und derselbe auf, sondern sie wechselt, sobald der Fänger jemanden anderen berührt. Genauso wechselt der Zeiger "temp_stone" den Stein(das Objekt), sobald der Spieler einen Stein anklickt.

Über die "handle" und die "ptr_for_handle"-Funktionen tauscht man Funktionen und Informationen über die Objekte unter den Objekten aus.