Csharpta Oyun programlama: Kaydır Doldur Oyunu v2.0

Daha önce de yayınladığım Kaydır Doldur oyununun ikinci versiyonunu buradan indirip oynayabilirsiniz. Ayrıca oyunun kaynak koduna buradan erişebilir ve geliştirebilirsiniz.

Neler Yeni?

Kutu Hareketlerindeki Düzenlemeler

Kaydır doldur oyunun birinci versiyonundaki hareket tutarsızlıkları nedeni ile yaptığım çalışmanın ardından oyunu tam bir düzene soktum. Düzenlenen yerlerden bahsedeyim. Öncelikle kutuların hareketlerine bir standart getirdim. Kutular blok halinde hareket ediyor. Sona geldiklerinde ise baştan başlayarak geçirgen bir duvar edası veriyorlar. Bu işlemleri yine dizi bazlı yaptım. Örnek olarak sağa kaydırma kodunu açıklayacağım. Kaynak kod ile ilgilenenler zaten göreceklerdir kod kısmının kısaldığını. Birinci versiyona göre daha az kodla daha etkin bir iş yapıldığının farkına varacaklardır.

[cc lang = ‘csharp’]
private void fnkSolaOtele(int i)
{
if (indis[i, 0] == 1 && indis[i, 1] == 1 && indis[i, 2] == 1 && indis[i, 3] == 1)
{
}
else
{
int temp;
int j = 0;
temp = indis[i, j];
while (j < 3) { indis[i, j] = indis[i, j + 1]; j++; } indis[i, j] = temp; renkDegistir(); hamleSayisi++; } } [/cc]

Level Oluşturma Aşamasındaki Düzenlemeler

Level oluşturma aşamasında yine v1’i kontrol edenler farketmişlerdir. For döngüsü ile oluşturulan seviyeler, v2’de diziye direkt eleman atanmasıyla oluşturuluyor. Bu kodun örneği de yine aşağıda bulunmakla birlikte kodun tamamını yukardan indirerek inceleyebilirsiniz. Üstelik daha fazla seviye ile oyuna da değişik bir heyecan geldi:) İyi oyunlar…

[cc lang =’csharp’]
private void setHedefIndex()
{
switch (level)
{
case 0:
hedefIndis = new int[,] {
{ 0, 0, 0, 0 },
{ 0, 1, 1, 0 },
{ 0, 1, 1, 0 },
{ 0, 0, 0, 0 } };
hedefSiyahSayisi = 4;
break;

case 1:
hedefIndis = new int[,] {
{ 1, 0, 0, 1 },
{ 0, 0, 0, 0 },
{ 0, 0, 0, 0 },
{ 1, 0, 0, 1 } };
hedefSiyahSayisi = 4;
break;

case 2:
hedefIndis = new int[,] {
{ 1, 1, 1, 0 },
{ 1, 1, 0, 0 },
{ 1, 0, 0, 0 },
{ 0, 0, 0, 0 } };
hedefSiyahSayisi = 6;
break;

case 3:
hedefIndis = new int[,] {
{ 1, 0, 0, 1 },
{ 0, 1, 1, 0 },
{ 0, 1, 1, 0 },
{ 1, 0, 0, 1 } };
hedefSiyahSayisi = 8;
break;
case 4:
hedefIndis = new int[,] {
{ 1, 0, 1, 0 },
{ 0, 1, 0, 1 },
{ 1, 0, 1, 0 },
{ 0, 1, 0, 1 } };
hedefSiyahSayisi = 8;
break;

case 5:
hedefIndis = new int[,] {
{ 1, 0, 0, 1 },
{ 0, 1, 0, 1 },
{ 0, 0, 1, 1 },
{ 1, 1, 1, 1 } };
hedefSiyahSayisi = 10;
break;

case 6:
hedefIndis = new int[,] {
{ 1, 1, 1, 1 },
{ 1, 0, 0, 1 },
{ 1, 0, 0, 1 },
{ 1, 1, 1, 1 } };
hedefSiyahSayisi = 12;
break;
case 7:
hedefIndis = new int[,] {
{ 0, 1, 1, 0 },
{ 1, 1, 1, 1 },
{ 1, 1, 1, 1 },
{ 0, 1, 1, 0 } };
hedefSiyahSayisi = 12;
break;
}
}
[/cc]

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir