Öncelikle merhabalar, ekte görüldüğü üzere küçük bir oyun yapmaya çalışıyorum. Ancak her "Enter" tuşuna bastığımda oluşturduğum mermiler kayboluyor ve yeniden oluşuyor. Buradaki kullandığım kodlar :
Dim mermi As New PictureBox
Dim boyut1 As New Size(30, 10)
Dim c As Integer = PictureBox1.Location.Y - 18 Dim d As Integer = PictureBox1.Location.Y - 45 Dim a As New Point(PictureBox1.Location.X - 28, PictureBox1.Location.Y + 18) mermi.Size = boyut1 mermi.Location = a mermi.ImageLocation = Application.StartupPath + "\bullet.png" Panel1.Controls.Add(mermi) bullet1.Start() ---->>>>>>> mermiyi ilerletiyor...
her mermiye bastığında aynı mermi nesnesi üzerinden işlem yapıyorsundur. bu yüzden tekrar yaratılıp baştan başlıyor.
bunun için bir mermi nesnesi dizisi kullanmalısın. mermi nesnesi düşmana vurduğunda yada ekrandan çıktığında hafızadan silinsin. yaratılmak istendiğinde de diziye yeni bir nesne ekle. mermiyi ilerleten fonksiyonu da tüm dizi üzerinde çalıştırırsın olur biter.
aynı oyunu konsolda yapmıştım. buradan inceleyebilirsin anlattığım mantıkta yapıyorum. kodlar c++ ile yazıldı ama mantık olarak bir şey farketmiyor. https://github.com/burakyzn/FinalProject
her mermiye bastığında aynı mermi nesnesi üzerinden işlem yapıyorsundur. bu yüzden tekrar yaratılıp baştan başlıyor.
bunun için bir mermi nesnesi dizisi kullanmalısın. mermi nesnesi düşmana vurduğunda yada ekrandan çıktığında hafızadan silinsin. yaratılmak istendiğinde de diziye yeni bir nesne ekle. mermiyi ilerleten fonksiyonu da tüm dizi üzerinde çalıştırırsın olur biter.
aynı oyunu konsolda yapmıştım. buradan inceleyebilirsin anlattığım mantıkta yapıyorum. kodlar c++ ile yazıldı ama mantık olarak bir şey farketmiyor. https://github.com/burakyzn/FinalProject
yine ben :)
kendi çapımda hallettim ancak yeniden ateşlendiğinde bir önceki mermileri durduruyor.
For i = 0 To mermisayisi - 1 b(i) = New PictureBox Panel1.Controls.Add(b(i)) b(i).Size = boyut1 b(i).Location = a b(i).ImageLocation = Application.StartupPath + "\bullet.png" Next bullet1.Start() 'alakası yok, ilerleme sağlıyor Timer1.Start() 'alakası yok, ilerleme sağlıyor
yüksek ihtimal bullet1.start() fonksiyonun tek mermi üzerine tasarlanmış. sen yeni mermi nesnesini fonksiyona verince diğer mermiler üzerindeki işlemini bırakıyor. hepsini kontrol edecek şekilde tasarlarsan düzelebilir. bu ve önceki sorunu ben de konsolda oyunu yaparken yaşamıştım :D neredeyse aynı adımlarda hata yapmışız :D
yüksek ihtimal bullet1.start() fonksiyonun tek mermi üzerine tasarlanmış. sen yeni mermi nesnesini fonksiyona verince diğer mermiler üzerindeki işlemini bırakıyor. hepsini kontrol edecek şekilde tasarlarsan düzelebilir. bu ve önceki sorunu ben de konsolda oyunu yaparken yaşamıştım :D neredeyse aynı adımlarda hata yapmışız :D
Alıntıları Göster
elimden geleni yaptım ama bir türlü işin içinden çıkamadım. githubta yer alan gmail adresine projemi yolluyorum kontrol eder misin ?
Dim mermi As New PictureBox
Dim boyut1 As New Size(30, 10)
Dim c As Integer = PictureBox1.Location.Y - 18
Dim d As Integer = PictureBox1.Location.Y - 45
Dim a As New Point(PictureBox1.Location.X - 28, PictureBox1.Location.Y + 18)
mermi.Size = boyut1
mermi.Location = a
mermi.ImageLocation = Application.StartupPath + "\bullet.png"
Panel1.Controls.Add(mermi)
bullet1.Start() ---->>>>>>> mermiyi ilerletiyor...
şeklinde. Nerede hata yapıyorum ?
< Resime gitmek için tıklayın >
< Bu mesaj bu kişi tarafından değiştirildi alicanakca -- 27 Haziran 2019; 16:21:3 >