Ana Menü
· Ana Sayfa
· Dosyalar
· Dökümanlar
· Forum
· Günün Resmi
· Haber Arşivi
· WWW Linkleri
· Üye Listesi

     Forumlar

 strncpy ve strncpy_s
 Konu adi : Borland c++ Builder ile Amiral Batti
 Rady10 - YerliOyun
 Kabusta Kaybolmak
 Konsol da programı bekletmek
 Oyun programlama icin hangi programlama dilli ?
 flash! şanlıurfa bilgisayar oyununda(no rapid)
 Sevgilim Olur musun?
 Directx'e başlamak isteyenler bi bakın
 PSP programlama
 Flash tan php
 Bilgisyr oyunu yapmam için üniverstde hangi bölüme girmeliym
 www.arshiv.gen.ms
 Cimg.h ilgilenenler icin
 müttefik oyunu

Konu Disi
 Emraah
 Yeni sitemiz açıldı
 Kalp krizi durumunda ne yapılmalı?
 Oyun sektöründe hangi görevde çalışmak isterdiniz?
 Takım arkadaşı sorunu
 msn de renklı nıck
 pc hata veriyor ! YARDIM!!
 Gülmek isteyenler Buraya
 İnanılmaz hl 2 modu görüntüsü
 Computer Languages History

[ Forumlara Git ]


oyunyapimi.org: Forums

www.oyunyapimi.org :: Başlığı Görüntüle - sonsuz bir dizi tanımlamak
 SSSSSS   AramaArama   Kullanıcı GruplarıKullanıcı Grupları   ProfilProfil   LoginLogin 

sonsuz bir dizi tanımlamak

 
Yeni Başlık Gönder   Cevap Gönder    www.oyunyapimi.org Forum Ana Sayfası -> Programlama Dilleri ve Algoritmalar
Önceki başlık :: Sonraki başlık  
Yazar Mesaj
coolprogrammer



Kayıt: Apr 30, 2005
Mesajlar: 71
Nereden: Ankara

MesajTarih: Mon Aug 29, 2005 9:50 am    Mesaj konusu: sonsuz bir dizi tanımlamak Alıntıyla Cevap Ver

Arkadaşlar ben bir oyun üzerinde çalışıyorum ve neredeyse sonsuz sayıda elemanı olan bir SDL_Surface tanımlamak istiyorum.Göstericilerle ilgili bir kuşkum var bilgisayarı bozar mı diye o yüzden size sorayım dedim:
Şöylemi tanımlıyım:
Kod:

SDL_Surface *resim[];

Yoksa ihtiyacım olduğunda a'yı bir arttırarak istediğim kadar resim elde etmek için şöylemi tanımlıyım:
Kod:

int a=300;
SDL_Surface *resim[a];
if (ifade)
{
a++;
}

Son kodda böyle yaparsam '*resim' kendini yeniden mi tanımlar yoksa gösterici hatası mı oluşur?Hangisi sizce doğru?Daha doğrusu var mı? Smile Ayrıca ilk kodda resimin istediğim elemanında erişebilir miyim?Cevaplarınız için şimdiden teşekkürler...
Başa dön
Kullanıcı profilini gör
vmeydaneri



Kayıt: Dec 08, 2004
Mesajlar: 583
Nereden: Ankara

MesajTarih: Mon Aug 29, 2005 11:23 am    Mesaj konusu: Alıntıyla Cevap Ver

Slm ,
Sanirim amacin Sprite tarzi bisi olusturmak.Yanliz bunun icin bu tarz bisikulanilmiyor onun yerine Liste yontemi kulanirsan istedigin kadar nesne basabilirsin ekrana ama sonucta onunda bir siniri olcaktir.

Liste yontemi ne dersen yandaki menudeki Mos2d Oyun Motorunu indirip bakabilirsin icinde Duvarkiran adli oyun var orda bloklar icin bu liste yontemi kulanildi.

Kisa bir ornek verecek olursak:

xxxxListe;

xxxxListe.Ekle(...);

xxxxListe.Cikar(...);

Bu tarz bisi.
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder Kullanıcının web sitesini ziyaret et MSN Messenger
DG



Kayıt: Mar 06, 2004
Mesajlar: 351
Nereden: Eskişehir

MesajTarih: Mon Aug 29, 2005 11:45 am    Mesaj konusu: Re: sonsuz bir dizi tanımlamak Alıntıyla Cevap Ver

Kod:

SDL_Surface *resim[];


Bu kod derlemez. Sebebi ise statik bir dizinin kaç tane öğe barındıracağının derleme-zamanında belirlenememiş olması.

Kod:

int a=300;
SDL_Surface *resim[a];
if (ifade)
{
a++;
}


Bu kod da derlemez. Sebebi yine aynı. Bir satır üstte int a = 300 demişsin ama o değer çalışma-zamanında belirlenebilir sadece ve o satır işletilirken değerinin 300 olacağının bir garantisi yok. eğer "const int a = 300" veya "#define a 300" dersen sorun çözülür.


Şimdi gelelim senin istediğin şeye. Eğer çalışma-zamanında bellek ihtiyacına göre büyüyüp küçülebilen diziler istiyorsan, dinamik bellekle çalışmalısın.

Bellek isterken:
Kod:
SDL_Surface **resim = new SDL_Surface[a];


resim'in işaret ettiği alanın büyüklüğünü değiştirmek için de realloc() gibi yapılar kullanmalısın (biri bunların C++ karşılığını hatırlatırsa çok makbule geçer)

STL'in içindeki list yapısını da kullanabilirsin. Gayet esnek bir containerdır.

Kolay gelsin Smile
Başa dön
Kullanıcı profilini gör Kullanıcının web sitesini ziyaret et
coolprogrammer



Kayıt: Apr 30, 2005
Mesajlar: 71
Nereden: Ankara

MesajTarih: Mon Aug 29, 2005 12:16 pm    Mesaj konusu: Alıntıyla Cevap Ver

Cevaplarınız için çok teşekkürler arkadaşlar sanırım anladım:
Kod:

int b=300;
int sayi;
SDL_Surface *resim[b];
if (sayi=b)
{
SDL_Surface *resim = new SDL_Surface[b+100];
}

Yeniden teşekkürler ve başarılar...
Başa dön
Kullanıcı profilini gör
DG



Kayıt: Mar 06, 2004
Mesajlar: 351
Nereden: Eskişehir

MesajTarih: Mon Aug 29, 2005 1:22 pm    Mesaj konusu: Alıntıyla Cevap Ver

coolprogrammer demiş ki:
Cevaplarınız için çok teşekkürler arkadaşlar sanırım anladım:
Kod:

int b=300;
int sayi;
SDL_Surface *resim[b];
if (sayi=b)
{
SDL_Surface *resim = new SDL_Surface[b+100];
}

Yeniden teşekkürler ve başarılar...


Yazdığın kodda hatalar var. Yine const olmayan bir ifade ile statik bir dizi ilklendirmişsin ve if'in içindeki ifade (sayi=b) şeklinde yani eğer b 0 veya 0.0 değilse her zaman true döner.

Açıkcası bu kodun hangi amaca hizmet etmeye çalıştığını anlayamadım. Bence std::list 'i bir dene.
Başa dön
Kullanıcı profilini gör Kullanıcının web sitesini ziyaret et
vmeydaneri



Kayıt: Dec 08, 2004
Mesajlar: 583
Nereden: Ankara

MesajTarih: Mon Aug 29, 2005 1:50 pm    Mesaj konusu: Alıntıyla Cevap Ver

Kod:

int b=300;
int sayi;
SDL_Surface *resim[b];
if (sayi=b)
{
SDL_Surface *resim = new SDL_Surface[b+100];
}


Zaten burda sayi = b demis yani sayi = b yapmis Smile

if(sayi == b) olmasi gerekti.

neyse neden bunla zaman kaydiyorsun iste bir liste kulanman gerek obur turlusu isine yaramaz ya arkadasin dedigi gibi

std:list kullan veya

Mos2d oyun motorunu indir ordaki listeyi kulan ..
Başa dön
Kullanıcı profilini gör E-Posta'yı gönder Kullanıcının web sitesini ziyaret et MSN Messenger
Mesajları göster:   
Yeni Başlık Gönder   Cevap Gönder    www.oyunyapimi.org Forum Ana Sayfası -> Programlama Dilleri ve Algoritmalar Tüm saatler GMT +2 Saat
1. sayfa (Toplam 1 sayfa)

 
Forum Seçin:  
Bu forumda yeni konular açamazsınız
Bu forumdaki mesajlara cevap veremezsiniz
Bu forumdaki mesajlarınızı değiştiremezsiniz
Bu forumdaki mesajlarınızı silemezsiniz
Bu forumdaki anketlerde oy kullanamazsınız


Powered by phpBB 2.x.x © 200x phpBB Group
Türkçe Çeviri : Onur Turgay & Erdem Çorapçıoğlu
Türkçe Düzenleme: Alexis Canver
Version 2.x.x of PHP-Nuke Port by Tom Nitzschner © 200x www.toms-home.com




Web site powered by PHP-Nuke
Web site engine\'s code is Copyright © 2002 by PHP-Nuke. All Rights Reserved. PHP-Nuke is Free Software released under the GNU/GPL license.
Sayfa Üretimi: 0.148 Saniye