View Full Version : مناسبترین کتابخانه برای C . . .
littledemon
پنج شنبه 20 فروردین 1388, 19:54 عصر
سلام
بازم با سوالات قاطی پاتی اومدم !!!
پروژه پایان ترمم یه بازی با C برداشتم !!!:لبخند: یکم احمقانه است ...
چون مهمترین قابلیتی که بهش احتیاج دارم رو نداره همون multithreading و ....
دوستان برای ساخت بازی با C چه کتابخونه مناسب و بی دردسر و اسونی میتونم استفاده کنم ؟(صرفا با C و نه با C++) . با SDL میشه ؟
از طرفی مشکلات چند ریسمانه و ... چجوری حل کنم ؟
با تشکر:خجالت:
pswin.pooya
پنج شنبه 20 فروردین 1388, 23:51 عصر
سلام
تقریبا تمام کتابخونه های c++ روی ز هم کار میکنن (مثل SDL،DEvil، OpenGL و OpenAL و.. .)
آره SDL این قابلیت رو داره و از چند نخی ( نه چند ریسمانه) پشتیبانی میکنه. کنار thread هم از موارد دیگه مثل موتکس ها و سمافورها پشتیبانی میکنه. برای اینکار باید از SDL_thread استفاده کنی.
خوب اینم یه مثال ساده از نخ ها داخل SDL:
#include "sdl/sdl.h"
#include "sdl/sdl_main.h"
#include "sdl/sdl_thread.h"
#include <iostream>
using namespace std;
#pragma comment(lib, "SDL.lib")
#pragma comment(lib, "sdlmain.lib")
// global count
int count;
int testfunc(void* data);
int _tmain(int argc, _TCHAR* argv[])
{
// Initialize SDL
if ( SDL_Init(SDL_INIT_EVERYTHING) == -1)
{
cout<< "Can not initialize SDL"<< endl ;
getchar();
exit(0);
}
int delay_time = 1000 ;
SDL_Thread *thread1 = SDL_CreateThread(testfunc,&delay_time);
if ( thread1 == NULL)
{
cout << "Can not create thread" << endl ;
getchar();
return 0;
}
for ( int i = 0 ; i < 10 ; i ++)
{
// wait for a secound
SDL_Delay(1001);
cout << count << endl;
}
// wait for finishing thread
SDL_WaitThread(thread1 ,NULL);
// end of the program
cout << "End of the program." << endl ;
getchar();
return 0;
}
// thread function
int testfunc(void *data)
{
int delay = *(int*)(data);
for ( int i = 0 ; i <5 ; i++)
{
SDL_Delay(delay);
count++;
}
return 0;
}
این مثال رو باید با موتکس ها کاملش کرد تا کاملا درست کار کنه. اما برنامه یه تایمر به صورت نخ داره که داخل اون مقدارش شمارش میشه و داخل بدنه اصلی توی هر یک ثانیه یک بار مقدار تایمر نمایش داده میشه. هم نخ و هم بدنه اصلی با تابع SDL_Delay یک ثانیه بخواب میرن ولی این مطلب باعث نمیشه که اونها رو هم دیگه تاثیر داشته باشن.
littledemon
جمعه 21 فروردین 1388, 09:51 صبح
خیلی فاز گرفتم ! دست گلت درد نکنه پویاخان
فوق العاده عالی !!!
به نظرت میتونم تو 40 روز با SDL یه چیز کوچولو و بدرد بخور تحویل استاد بدم ؟ یا باید بیشتر وقت بزارم .چون تا حالا باهاش کار نکردم ببینم چقدر دست و دلم بازه تو کار کردن باهاش!!! البته اگه هدفم معین باشه حله ولی خوب خود برنامه نویسی و محیط هم یکم بالاخره باید رو فرم باشه .
pswin.pooya
جمعه 21 فروردین 1388, 13:25 عصر
سلام
من SDL رو همراه با OpenGL کار میکنم و از توابع داخلی گرافیکیش خبری ندارم. و نمی دونم چه قدره میشه یاد گرفت. ولی بقیه قسمتها رو سریع میتونی یاد بگیری یعنی ماوس، کی بورد، ساخت پنجره و تایمر و ... رو میتونی کمتر از سه، چهار روز یاد بگیری. کار کردن با SDL خیلی آسونه. نمی دونم بازی که میخوای بسازی چی هستش ولی اگه از این بازیهای آرکید آسون باشن چرا که نشه. شاید یه هفته ای هم بتونی بسازی ولی اگر بخوای یه بازی مثل بعضی از بازیهای GameMaker بسازی یه مقدار وقت کم داری. بازم بستگی به بازیش داره بازیهای مثل PakMan ، Pong و snake بازیهایی هستن که سریع میشه ساختشون و کار خاصی رو نیاز ندارن.
بازم اگه سوالی داشتی بپرس
littledemon
یک شنبه 23 فروردین 1388, 09:14 صبح
نمیشه از دکمه تشکر استفاده نکنم..کلا وقتی جواب میدی خیلی کامل و بی نقصه . دقیقا چیزایی که من میخوام.
و اما:
استاد ما گیره یکم !!! حتما کدنویسی باید با خود محیط Turbo C انجام بشه !!! و این مشکل اصلی منه ...که اگه مستقیما از داخل C بخوام بنویسم چکار کنم برای ارتباط با کتابخونه ها و هدر ها ؟ من این کارو کردم هدر های SDL رو ریختم داخل هدر های خود سی . ولی وقتی هدر SDL.H رو خوند گفت : فلان هدر رو نمیتونم باز کنم. در صورتی که هدر کنارش بود !!! راه اندازی اولیه اش خیلی برام دردسر ساز شده . و همه جا هم تو نت یا با CodeBlock گفته یا با .NET یا ... که همه شون هم با زبان C++ هست .. تازه وقتی هم که با CodeBlock پروژه شو ایجاد کردم و تبدیل کردم به سی با یه سپاه ارور مواجه شدم !!!
چه کنم پویا جان؟
pswin.pooya
یک شنبه 23 فروردین 1388, 13:57 عصر
سلام
توربو سی یه کامپایلر قدیمی هستش که میتونم خیلی راحت بگم که نمی تونی خیلی از موارد رو داخلش استفاده کنی. کامپایلر Visual C++ کد سی رو هم بدون اینکه هیچ وابستگی به دات نت ایجاد کنه کامپایل میکنه. کار کردن با توربو سی یه اشتباه بزرگه و متاسفانه از طرف بعضی از اساتید بی سواد توصیه میشه. اگر استادتون شما رو به این کار مجبور کرده خیلی راحت بهش بگین امکان نداره. بگذریم تو این فایل pdf نحوه نوشتن برنامه های سی و سی ++ با کامپایلر ویژوال سی ++ 2008 که همراه ویژوال استادیو 2008 هستش شرح داده شده:
http://iautabriz.persiangig.com/guides/cpp/VSCPP.pdf
برای نصب sdl باید کارهای زیر رو انجام بدی:
1. کپی کردن فایلهای هدر تو پوشه include ویژوال سی ++ ( این پوشه تو مسیر نصب اون هست)
2. کپی کردن فایلهای lib داخل پوشه lib ویژوال سی++
3. یادت باشه که فایلهای lib رو به جای include کردن باید با #pragma اضافه کنی.
اگه کد بالا رو داخل ویژوال استادیو کپی کنی کاملا درست کار می کنه. ولی فکر نکنم با کامپایلرهای دیگه مخصوصا کامپایلرهای قدیمی جواب بده.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.