Kayıt
15 Mart 2013
Mesajlar
1.390
Beğeniler
149
Arkadaşlar merhaba. Kuzenimin 1. sınıf dersi için c++ proje ödevi hazırlıyoruz. Sağ olsun biraz bana kitledi bende kıramadığım için hem öğreterek hemde anlatıp kendisine yaptırtarak giriştim bir işe.
Konuya gelecek olursak. 1. sınıf 1. dönem dersi olduğu için Nesne tabanlı bir proje yapamıyorum. Henüz classları, constructor,destructor gibi işimi kolaylaştıracak şeyleri öğrenmedikleri için bunları kullanamıyorum.

Öncelikle 2 boyutlu konsol üzerinde oynanılan visual studio kullanarak bir araba oyunu yapıyorum. (Pacman gibi aslında)
Haritayı 2 boyutlu bir array olarak tasarladım ve 16*33 lük bir array.
Arrayin üyeleri 0,1 ve 2 den oluşuyor. Örnekle;
(Array tablosu biraz saçma gözükmüş forum düzeninde)
int firstMap[16][33] =
{
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1 },
{ 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1 },
{ 1, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1 },
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1 },
{ 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1 }
};

1 ler duvar
0 lar arabanın gidebileceği yol
2 Fnish çizgisi

Şimdi benim hareket fonksiyonum döngüden oluşuyor ve oluşturduğum karakteri 2 ye getirene kadar devam ediyor.

İhtiyacım olan şey ise benim hareket fonksiyonumun başlangıcından döngüsü 2(fnish çizgisi) ye gelene kadar sürekli çalışan bir sayaç lazım. Kafama takılan ise hareket fonksiyonunun mantığında arabayı her ilerlettiğimde sayfa yenileniyor ve araba bastığım tuşa atadığım koordinata göre x +1/-1 veya y +1 -1 konum değiştiriyor.
Sürekli yenilenen bir konsol sayfasında ben nasıl aktif bir sayaç yaratabilirim.

İkincisi ise Pacman gibi belirli koordinatlara koyduğum yemlerin(bonus) +saniye bonus olarak ayarlamasını yapabilir miyim ? Bu sayaç üstünde direkt güncellenir mi ?


Biraz uzun tuttum ama tam ayrıntısıyla anlatmam için gerekiyordu.

Zamanını harcayıp okuyan yardımcı olmaya çalışan arkadaşlara şimdiden Teşekkür Ederim :)
 
Kayıt
17 Kasım 2016
Mesajlar
3.162
Beğeniler
466
Rica ederim okumak benim için bir zevkti.


Edit : Mesleğimi değiştiriyorum P̶r̶o̶g̶r̶a̶m̶l̶a̶m̶a̶ ̶T̶e̶k̶n̶i̶k̶e̶r̶i̶
 
Kayıt
15 Temmuz 2009
Mesajlar
9.024
Beğeniler
254
Takımı
Galatasaray
yapmak istediğin şeyi anlayamadım. oyunu yön tuşlarıyla mı oynuyorsun? yoksa otomatik olarak 2 ye kadar gidecek bir döngü mü yapmaya çalışıyorsun?
 
Kayıt
15 Mart 2013
Mesajlar
1.390
Beğeniler
149
Switch-case ile hazırlanan bir menüm var ve start dediğimde oyun başlıyor.
Önce map fonksiyonu sonrada hareket ettirme fonksiyonum çalışıyor.(Aslında bana lazım olan süre hareket ettirme döngüsünün bitiş süresi)
Yön tuşlarıyla oynuyorum. 2 ye ulaştığımda oyun bitiyor ve Game fnished and ur fnish time: .... yazıyor.

İstediğim oyunun başlangıcından ( start gameyi seçtikten sonra) 2 ye ulaşana kadar geçen süreyi bulmak.
Yapılabilirse oyun oynarken ekranın her hangi bir yerine saniye sayacı koymak.

Ayriyetten pacman gibi belirli koordinatlara (arraylere örneğin firstMap[7] [8] arrayini 3 yapip ) hedefe gelirsem saniye-=3 yapma gibi bir planım var.
 
Kayıt
15 Mart 2013
Mesajlar
1.390
Beğeniler
149
Karışık mı oldu bilmiyorum uygunsa ne zaman istersen tw yada skype verebilirim göz atman için^^
 
Kayıt
15 Temmuz 2009
Mesajlar
9.024
Beğeniler
254
Takımı
Galatasaray
yapmak istediğin şey için alsında bir sayaça ihtiyacın yok.
start game dendiğinde bir değişkende saati tutup bittiğinde saniye farkını hesaplayabilirsin.
Pacman olayı için de her hareket edildiğinde arrayin o indexinde 3 varsa bir değiken tutup onu +1 yapabilirsin, oyun bittiğinde kaç kere bonus aldıysa 3 ile çarpıp total süreden düşebilirsin.

c++ yazmıyorum bu yüzden nasıl alınır bilmiyorum ama epoch time kullanarak rahatlıkla hesaplarsın, (epoch 1970li bir tarihten bugune kadar geçen saniye sayısı) bir oyun başladığında bir oyun bittiğinde al. Aralarındaki fark = geçen süre.
time_point::time_since_epoch - C++ Reference
 
Kayıt
15 Mart 2013
Mesajlar
1.390
Beğeniler
149
Teşekkürler deneyeceğim şimdi. Dediğim gibi bir videoda sayaç gördüm projeye eklemek hoş ve özgün durur gibi geldi fakat. Denediğimde tam olarak saniye ile aynı hızda olmadığını fark ettim.

 
Kayıt
15 Temmuz 2009
Mesajlar
9.024
Beğeniler
254
Takımı
Galatasaray
Sayacın her tickinde bir işlem yapmayacağın için sayaç kullanmak gereksiz bu durumda. Geçen saniyeyi hesaplamak için sayaç iyi bir yöntem değil.
Videodaki eleman sayacı threadi uyutarak yapıyor. Bunu ana threadde yaparsan programın çalışması da aksar.
 
Yukarı Alt