Skip to content

Instantly share code, notes, and snippets.

@aeren108
Last active May 10, 2020 21:30
Show Gist options
  • Save aeren108/cc3123f811bcadaf0a3161680a7b65b6 to your computer and use it in GitHub Desktop.
Save aeren108/cc3123f811bcadaf0a3161680a7b65b6 to your computer and use it in GitHub Desktop.
delegate int Fonksiyon(int x, int y);
public Vector2[] Cevir(int r, Vector2[] tetromino) {
//Burada r döndürme açısını ifade ediyor.
//tetromino ise bir vektör dizisi ve tetrominonun koordinatlarını tutuyor.
//(Vector2, XNA framework'ü içinde yer alan bir sınıf)
Vector2[] t = new Vector2[tetromino.Length];
//Döndürülmüş koordinatları tutacağımız vektör dizisi
Fonksiyon i;
//i(x,y) fonksiyonu için bir temsilci;
switch (r) {
case 0:
i = delegate(int x, int y) {
return x + (y * 4);
};
break;
case 90:
i = delegate(int x, int y) {
return 12 + y - (x * 4);
};
break;
case 180:
i = delegate(int x, int y) {
return 15 - x - (y * 4);
};
break;
case 270:
i = delegate(int x, int y) {
return 3 - y + (x * 4);
};
break;
}
for (int j = 0; j < tetromino.Length; j++) {
Vector2 koordinat = tetromino[j];
int indis = i((int) koordinat.X, (int) koordinat.Y); //i(x, y) fonksiyonu
int x = indis % 4; // indis'in 4'ten kalanı
int y = indis / 4; // (indis / 4)'ün tam kısmı (int olması önemli çünkü sadece tam kısmı gerekiyor)
t[i] = koordinat;
}
return t;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment