Şimdi Ara

c ile tasarlanacak windows üzerinde okey oyununda gui/grafik apisi seçimi

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
25
Cevap
1
Favori
1.215
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 12
Sayfaya Git
Git
sonraki
Giriş
Mesaj
  • Bir süredir c öğreniyorum. Kendimi sınamak ve eğlence olması amacıyla bir okey oyunu yazmayı planlıyorum. Oyun windows üzerinde çalışacak. Neden C oluyorda c++ yada c# değil derseniz şuanda öğrendiklerimi pekiştirmek istiyorum. İşin temelinde birşeyler üretebildiğimi görürsem ilerde gönül rahatlığıyla c++ ada c# e de atlarım.


    Bu planda en çok kafamı kurcalayan konu grafik çıktısını nasıl yapacağım... misal https://www.sfml-dev.org/ yada https://www.libsdl.org/ kullanabilirim. Ancak bu yazılımlarda dökümantasyon konusunda biraz sıkıntı yaşadım. Genellikle bulunan dökümantasyon hep c++ a göre. butonları yazı girişlerini windows apisi yardımıylada yapabilirim. hatta bu işi visual studio benzeri bir yazılımla görsel windows formu üzerindende tasarlayabilirim. ancak yanlış öğrenmediysem c ile birlikte bu işi yapabilen son visual studio 2008 versiyonu. bulduğum yabancı kitaplar genelde düşündüğümden daha karmaşık oyunları yapmak için ve ağırlık c++'ı baz alıyor. özetle c ile bir okey oyunu guisi hazırlamam gerekecek. ihtiyaç duyacağım şeyler buton. yazı girişi-yazı çıkışı. taşları hareket ettirebilmek için sprite desteği. belli bir arka plan grafiğinin ekrana basılması. birden farklı arkaplanların isteğe bağlı ( farkı sayfalar için ) gösterilebilmesi. windows gdi mı kullanıyım directx mi yoksa bunları kullanan işimi kolaylaştıracak bir api mi ? şöyle diyim görselliği terminal üzerinden yapacak olsam hiç sıkıntım yok. ama grafik/gui/api kısmı kafamı çok kurcalıyor. hangi bugün öğrendiğim o api bilgisinin ilerdede işime yaraması güzel olurdu. ama çoğu güncel çok fonsiyonlu api/engine ( misal unity ) c desteklemiyor... derdimi anlatabildiysem ne mutlu. tavsiyelerinize ihtiyacım var.








  • opengl
  • ne diye kendine eziyet edersin git adam gibi windowsta c# ile yap geç kimse c ile gui oyun yaptın diye sana madalya vermeyecek öteki türlü de vermeyecek de çakı ile ağaç kesmenin gereği yok

  • Gökşen PASLI G kullanıcısına yanıt

    oyundan herhangibir beklentim yok. daha c++ ve c# ile çalışmaya başlamadım. onlara başlayınca onlarla farklı bir deneme ürünü yaparım. şu an bisiklet kullanıyorum tam vakıf olunca motorsiklete geçeceğim.

  • Kurtçu Restrop kullanıcısına yanıt

    sana hak verdim ve araştırmaya başladım. pek çok kod örneği buldum. kodların bi kısmı linux bi kısmı windows için. bi kısmı c bi kısmı c++. değişik kütüphane fonksiyonları istiyorlar. ayrıca compilere ekstra komut vermekte gerekebiliyor. bulduğum örnek kodlardan sadece birinde hangi compiler ve ek ayarlarla çalıştığı yazılmış. linux altında geliştirme yapsam belki daha problemsiz olacak ama windowsta sıkıntısı fazla.




    < Bu mesaj bu kişi tarafından değiştirildi eskibirkurt -- 4 Mart 2021; 21:7:25 >
  • Qt Framework

  • controller_ kullanıcısına yanıt

    olay c++ öğrenip o tarz bir framework kullanmaya doğru gidiyor. c ve gui, grafik api ile ilgili neredeyse tüm kaynaklar oldukça eski.

  • eskibirkurt kullanıcısına yanıt

    İlla C olsun istiyorsan GTK kullan.


    https://en.wikipedia.org/wiki/GTK


    Eski ama güncel, hala geliştirilmeye devam ediliyor. C ile kullanabileceğin en güncel GUI kütüphanesi bu.

  • controller_ kullanıcısına yanıt

    windowsta gtk için msys2 kurulması gerekiyor. yani yapacağım uygulamayı çalıştıracakların onunlada uğraşması gerekecek. birde gtk'nın genel dökümantasyonu linux altında kullanıma göre. "iup portable user interface" diye birşey buldum. oda olabilir. ama henüz hem pratik hem hem c için hem windows dökümantasyonu düzgün bir seçenecek göremedim.

  • eskibirkurt kullanıcısına yanıt
    İşin temelini öğrenmek istiyorsan KurtçuRestrop 'un da dediği gibi OpenGL tektir cunku grafik programlama API'ler arasında ilk ve en yaygın olanı o. Masaüstünde basit grafikli bir oyun geliştirmek için de oldukça uygun. OpenGL 2021 itibarıyla büyük projelerde de kullanılıyor o projelerden birin alt projesinde bizzat görev aldım oradan biliyorum. Tabi ki projede OpenGL ile grafik programlamadım daha cok işin Devops kısmındaydım fakat OpenGL'nin ne kadar temel olduğunu orada gördüm.

    Benim eski Mac'te kurulu X Window kütüphanesine bağlantı atarak yaptığım basit bir OpenGL'yi uygulamasından screenshot. Kodları OpenGL geliştirme ekibinden Mark Kilgard'ın 567 sayfalık OpenGL Programming for the X Window System belgesinden aldım; hızlı örnek amaçlı.

    Edit: OpenGL'yi ilgili DLL'leri indirip PATH'e ekleyerek Windows 'ta da sorunsuz kullanabilirsin. GTK+ için birşey diyemem fakat OpenGL için MSYS şart değil.
    Edit 2: Programı derlerken bağlantı attığım GLUT ve Xext kütüphaneleri, görünen kod için gerekli değil, bir önce denediğim koddan kalmışlar. Görünen kod sadece X Window kullanıyor örneğin resimdeki küp üzerine tıklayınca mouse klik eventlerini X Window üzerinden alıyor.


    c ile tasarlanacak windows üzerinde okey oyununda gui/grafik apisi seçimi



    < Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 5 Mart 2021; 14:42:44 >
    < Bu ileti mini sürüm kullanılarak atıldı >




  • Dostum her cevabi kestirip atmak yerine biraz arastirip ogren. Bu kafayla cok fazla ilerleyemezsin.


    MSYS2 sadece development icin gerekli, kullanicinin yuklemesine gerek yok. Sen zaten uygulamayi verirken uygulamayla beraber linkledigin kutuphaneleri de vereceksin.


    WIN32 API kullanmadigin surece ne kullanirsan kullan hepsi zaten bir kutuphaneye ihtiyac duyacak ve sadece kutuphane icin komple MSYS2 yuklemene gerek yok.


    Senin dedigin gibi olsaydi GIMP'i windowsda calistirmak icin herkesin MSYS2 yuklemesi gerekirdi.

  • controller_ kullanıcısına yanıt

    samimiyetle kestrip atmak için öyle yazmıyorum. düşüncemi paylaşıyorum. inan kestirip atmak isteyen bir kafada olsam çoktan c++ yada c# e yönlenir zibil kaynak api v.s. yardımıyla amacıma kolay yoldan ulaşırdım. gtk çalıştırmak için msys2 gerekli sanıyordum. windows altında glade'i yükledim ve çalışmaya başlamadan önce terminal üzerinden msys2 çalıştığını görüyorum. ama dediğin gibi gimp yüklemek için msys2 gerekli olsa biçok uygulamada onu isterdi.

  • eskibirkurt kullanıcısına yanıt
    MSYS2 daha cok (aslında sadece) Windows'ta bash gibi Unix shell çalıştırmak için kullanılıyor ve Windows'ta Unix terminal kullanıyormuşcasına bir his veriyor. OpenGL veya GTK+ tabanlı program yaparken sadece kolaylık ve o Unix hissini verir ancak şart değil.

    < Bu ileti mini sürüm kullanılarak atıldı >
  • Sınırlarını aşmaya çalışmışsın. Şimdilik daha kolay projeler seç kendine.

  • arkadaşlar linux altında direk dev paketlerini yükleyerek oldukça kolay şekilde gtk uygulama geliştirilebiliyor. ancak aynı işi windows altında yapmak için bugün tabiri caizse deveye hendek atlattım. emulator falanda kullanmadım linux altında cros compilation şeklinde windowsa uygulamada hazırlamadım. windows altında gcc ile windows altında çalışabilir gtk uygulama örneği derlemeye çalıştım. kimseyide germek kızdırmak için bunları yazmıyorum. pek çok hatayı aştıktan sonra linker LD nin verdiği hataları atlamak için kullandığım son komut promptu yazısı şöyle birşey:


    "gcc gtktest.c -o gtktest -latk-1.0 -lgdk_pixbuf-2.0 -lpangowin32-1.0 -lgdi32 -lpango-1.0 -lgobject-2.0 -lgmodule-2.0 -lglib-2.0 -lintl -liconv -lgtk-3 -lgdk-3 -latk-1.0 -lcairo-gobject -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0"


    google araştırmalarım sonucundada gördüğüm biçok kişi benim gibi sıkıntıya düşmüş. bulduğum çözümleri birleştirdim birazda kendim ekleme yaptım sonunda bir gtk uygulama derledim.


    sizlerden ricam. windows üzerinde güncel gcc portu ve güncel gtk ve c ile herhangibir gtk uygulaması derlemeniz. özellikle bunu kolaylıkla başarırsanız işlem adımlarını lütfen not edin. burdan güzelce tane tane yazın.




    < Bu mesaj bu kişi tarafından değiştirildi eskibirkurt -- 5 Mart 2021; 21:58:47 >




  • dostum şu gtk konusu bi netleşsin opengl konusunada tekrar bakacağım. 1-2 tane c kitabı bitirdim. gerçi tamamı konsol-terminal çıktısına dayalı örnekler içeriyor. hiçbir sorunum olmadı. nezaman grafik çıktısı için kütüphane eklemeye başladım derleyecide yaşadığım sıkıntı çok. ama linuxta hazır paketleri yükle tıkır tıkır başla. opengl için doğru dürüst bir kitaptan faydalanmadım henüz.


    grafik çıktısı için kullandığım aracılarda gördüğüm klasik sıkıntıda şu. önce header file ları bulamıyor onları bulduruyorum busefer linker ld sorunları başlıyor. windows altında sıkıntım derlemede.




    < Bu mesaj bu kişi tarafından değiştirildi eskibirkurt -- 5 Mart 2021; 22:26:21 >
  • c ve c++ birlikte çalışıyor. sdl ile sırf c dosyalarında sorun yaşamadım. c#'a başlamayabilirsin ama kendini geliştirmek istiyorsan kesinlikle c++'a başla


    < Bu ileti mobil sürüm kullanılarak atıldı >
  • eskibirkurt kullanıcısına yanıt
    gcc komut satırını Makefile 'a aktarman iyi olur cunku ld nin bağladığı birçok kütüphane var, komut satırından onları takip etmen güç olabilir.

    Windows 7 64bit bilgisayarımda boş bir GTK3 penceresi çıkarmak için yazdığım Makefile

    c ile tasarlanacak windows üzerinde okey oyununda gui/grafik apisi seçimi

    < Bu ileti mini sürüm kullanılarak atıldı >
  • dostum güzel olmuş saygılar. makefile konusunda fazla tecrübem yok. bugün bütün gün internet araştırması yaptıktan sonra tam yeri ile bağlantıya geçtim. keşke baştan onu yapsaymışım. linuxla paralel son gtk sürümüyle sıkıntıya girmeden oluyor.

  • eskibirkurt kullanıcısına yanıt

    Kod

    Yığını:
    # 6.MAR.2021 CC = $(GCC)\bin\gcc APP = gtk3-ornek CFLAGS = -I$(GLIB2)\include\glib-2.0 -I$(GLIB2)\lib\glib-2.0\include -mms-bitfields -I$(GTK3)\include\gtk-3.0 -I$(GTK3)\include\pango-1.0 -I$(GTK3)\include\cairo -I$(GTK3)\include\gdk-pixbuf-2.0 -I$(GTK3)\include\atk-1.0 LIBS = -L$(GTK3)\lib -lgtk-3 -L$(GLIB2)\lib -lglib-2.0 -L$(GETTEXT)\bin -lintl-8 SRC = $(APP).c BIN = $(APP).exe all:     $(LIBS)     $(CC) -m64 $(CFLAGS) -o $(BIN) $(SRC) $(LIBS)

    Makefile 'ı kod olarak ekleyeyim. Orada shell değişkeni olarak gördüğün GLIB2 GTK3 ve GETTEXT 'i Windows 'ta Ortam Değişkenleri >> Sistem Değişkenleri altında tanımladım, make onları oradan alıyor. Fakat o değişkenlerin bin klasörünü Path altına da %GTK3%\bin;%GETTEXT%\bin;%EMACS%\bin şeklinde eklemelisin cunku exe'yi oluşturup çalıştırdığında exe GTK3 ve GETTEXT (libintl-8.dll) DLL'leri bulabilmeli. Path değişkeninde sona %EMACS%\bin; 'i neden ekledim? Cunku Emacs bin klasörü altında da libintl-8.dll var ve path değişkeninde %EMACS%\bin 'i önce yazarsan GTK3 örnek programı önce onun altındaki libintl-8.dll kullanıyor GTK3 ile uyumlu GETTEXT altındaki libintl-8.dll'i kullanmıyor o yüzden. Emacs değil de başka bir program bin klasörü Path 'te girilmiş olabilir ve o program da libintl-8.dll kullanıyor olabilir, Emacs sadece örnek.


    Başka bir deyişle kurduğun programların kurulum klasörleri ve onların windows Sistem Değişkenleri'nden tek tek tanımlanması şart olmasa da önemli, işleri kolaylaştırır. GTK3, Gettext gibi sistem programlarını zip, rar, xz gibi "portable" formatta indirip hepsini aynı ve belli bir klasör altına kurmak da önemli. Örneğin atıyorum kafadan, GTK3 C:\Program Files, Gettext C:\Program Files (x86) gibi farklı klasörler altında olması işleri karışıklaştırır. Ben hepsini C:\Programs adında bir tek klasöt altına kuruyorum böylelikle nerede ne var hepsini görüp ona göre Sistem Değişkeni tanımlıyorum...




    < Bu mesaj bu kişi tarafından değiştirildi Tuğkan-0153 -- 6 Mart 2021; 12:44:46 >




  • 
Sayfa: 12
Sayfaya Git
Git
sonraki
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.