ساخت یک بازی با زبان Turbo C++]l] (پست اول مشاهده گردد) در اینجا !
به نام خداوند بخشنده و مهربان
بر آن شدم از جزوات خودم و آموخته های خودم و از منابع و کتاب ها یک سورس برنامه استخراج کنم و برای عزیزان به نمایش بگزارم.... :دی
بگزریم از این مسایل شما به آشنایی با زبان C یا C++l احتیاج دارید.
برنامه های مورد نیاز :
Turbo C++ 3.0.0
or
Microsoft Visual C++ 2005 Express Edition
احتیاج دارید و باید به C++l حداقل یک آشنایی داشته باشید...
+++++این برنامه با Turbo بهتر نوشته می شود...
+++++این برنامه از یک سورس بسیار قدیمی است...
+++++سوال فقط پ.خ
++++++برای تشکر از دکمه تشکر استفاده نمیایید! :دی
و در آخر عاشقتم :
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
منبع اصلی :
آموزش Turbo C++d
نویسنده : استفان.آر.دیویس
مترجم :مهندس کیوان فلاح مشفقی
چاپ 1375 هجری شمسی !
ناشر اصلی : Addison-Wesley
ناشر ایرانی :انتشارات جزیل
قیمت :1500 تومان!
تعداد صفحات :512 صـــــ
نکته مهم:
برای اجرای این بازی احتیاج به یک Win قدیمی مثل 95,Xp
و یا حداقل یک MS-Dos
و یا Linux,Unix,Minix
تشکر شما نشانه رضایت و ابته (شخصیت) شماستـــــــ
م.ن.ح.خ
نکتــــــــــــــــــــه مهم!
++++++حتما به انگلسی مسلط باشید یا کمی آشنایی داشته باشد+++++++
آموزش 1 --- وظایف هدایتـــ کننده کرمها (worms)
خب شروع شد.
فقط لطفا اسپم ندید و گرنه :====
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
------------------------------------------------------>
وظایف هدایت کننده ها بر اساس کلاس Direction
بصورت زیر تعریف شده اند :
[PHP]class Direction : public Task {
public:
Direction(void (*myf) () , char* name) :
Task (myF, 0x0200, name) {}
};[/PHP]
آموزش 2 --- طراحی کرمها (Worms)
خب آموزش طراحی کرمها
------------------------------------
کرمها بر اساس کلاس Worm طراحی می شوند که بصورت زیر باید تعریف شود :
[PHP]class Worm : public Task {
friend ostream& operator<< (ostream& s, Worm& td);
private:
char color; //color+location of Worm
char ourChar; //it is character
unsigned xloc, yloc; //it is location
unsigned direction; //direction of travel
Direction* driverPtr; //address of driving task
public:
Worm(unsigned c, unsigned x, unsigned y, char symbol,
Direction* dPtr) : Task(wormTask, 0x0100,"Worm") {
color = c;
ourChar = symbol;
Xloc = x;
yloc = y;
direction = c & 0x03; //start each worm in a
//different direction
driverPtr = dPtr;
}
void getNewDirection();
void updateLoc();
};[/PHP]
اینم از طراحی کرم ها
آموزش 3 --- خصوصیات کرمها + اجرای عملیات کرمها (اسپم ممنوعــ!ـــه)
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
معذرت از غیبتم این چند روز.
و خیلی متشکرم از اسپمر معروف کسی که چند ایمیل را تا الان به طور قطع پر از اسپم کرده آقای ehsan_wwe عزیز .
تشویــــــــــــ
[اسپم جدید :ehsan_wwe] تایپیکو می فرستم بالا [/اسپم جدید : ehsan_wwe]
؟؟؟
جان؟؟؟
بله؟؟
به گوشم کجا؟؟ بالا؟؟؟ Up؟؟ هوا؟؟
اسپم ندید تایپیک جونم خراب میشه
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
.
.
.
--------------------------------------------------------------
+++ توضیحاتی مربوطه به کرمها +++
هر کرم دارای یک رنگ مخصوص/یک علامت نمایشی/ است که آنها را از هم متمایز می فرماید...
و همچنین هر کرم در یک مسیر / یک موقعیت حرکت می کند .
ولی در نهایت یک کرم از آدرس وظیفه ای که باید تعیین جهت حرکت خود به آن رجوع کند مطلع است ! (اصل فیزیکی مجید :دی)
این مقادیر در سازنده یا Constructor (درست نوشتم؟؟؟
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
) کلاس Worm مقداردهی اولیه می گردند.
در این شبیه سازی ما از یک سازنده دارای سه آرگومان استفاده کردیم . آن هم در کلاس Task !!!
++ توضیح آرگومان ها ++
>> این آرگومانها فضای حافظه ای انباره ای یا Stack را از طریق حافظه Heap تخصص دهی می کنند <<
+++ اجرای عملیات کرمها +++
دوباره باید تایپ کنم.... ): ....
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
خب شروع :
اجرای عملیات کرمها از طریق تابع WormTask :
[PHP]void wormTask() {
Worm& ourworm = *(Worm*)currentTask();
for (;;;) {
tDely(1) //skow worms down to human speeds
ourWorm.NewDirection();
ourWorm.updateLoc();
Cout<<ourWorm;
}
}[/PHP]
م.ن.ح.خ
آموزش 4 --- توضیح کد آموزش 3 (آموزش 3 مطالعه گردد)
با سلام مجدد به دوستان
توضیحاتی راجع به کد قبل .
---------------------------------------------
احصار تابع ()tDely سرعت کرمها را تا حد سرعت انسان کم می کند.
طرح کلی مابقی محتویات این تابع نکته با اهمیتی ندارد.
یک کرم جهت خود را از طریق تابع getNewDirection پرس جو می کند سپس این کرم موقعیت صفحه تصویری خود را توسط تابع updateLoc نوسازی کرده و نهایتا با استفاده از تابع
operator<<(ostream&, Worm&) D
نماد مربوط به خود را به خروجی می فرستد.
-------------------------------------------------------------------------------------
توضیح خوبی بود؟ _\(^_^)/_
یک نکته مهم:
اساخت این بازی به دانش شما هم نیاز دارد. این ها همه کلی اند و ما فقط سورس + نحوه عمل را در اختیار شما می گزاریم.
برای اجرا در ویندوز های Xp به بالا به Dos Box احتیج دارید.
برای اجرا در غیر ویندور می توانید از Linux,Unix,Minix استفاده کنید
برای اجرا در سیستم عامل Ms - Dos استفاده کنید.
م.ن.ح.خ
;k
gs
.... (آموزش 4 --- وظیفه تابع getnewDirection)
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
با عرض ادب به همه (به جز یک نفر
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
)
شوخی بود ولی حتما پاک کنید.
+ خیلی ممنون تایژیکو به قول خودت فرستادی بالا ... (:
ولی خودمونیم شیشه خورده داریا (:دی خه خه خه )
--------------------------------------------------------------------------------------
این چیه؟ getnewDirection؟
این تابع خیلی مهم است.
یک پیام را تهیه کرده و آن را به وظیفه هدایت کننده مناسب می فرستد .
سپس این تابع به انتظار عکس العمل این وظیفه باقی مانده و پس از دریافت آن را ذخیره می کند :
Code ++d :
[PHP]void Worm::getNewDirection() {
//Build a requast massage and send it
ReqouestMsg reauest (this);
driverPtr->sendMsg (&request?);
//await a respones, store the anwer and return msg
AnswerMsg& answer = *(AnswerMsg*)getMsg();
direction = answer.direction;
}[/PHP]
آموزش 5 --- سازه های Structures
سلام مجدد به دوستان عزیزم.
امید وارم تا اینجا خوب توضیح داده باشم
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
و گرنه ====
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
------------------------------------------------------------------------------
سازه ها
سازه های Structures موسوم به ReauestMsg و AnswerMsg بصورت ذیل تعریف می گردند :
Code ++d :
[PHP]struct RequestMsg : public Message {
Worm* wormPtr;
RequestMsg(Worm* wPtr) { wormPtr = wPtr; }
};
struct AnswerMsg : public Message {
unsigned direction;
};[/PHP]
توجه ! (قابل توجه برخی از کسانی که این کد هارو نفهمیدن )
نکته مهم : " توجه نمایید که تابع getNewDirection باید آدرس شیء از کلاس Task که متعلق به آن است را پیش از فرستادنآن در پیامی ذخیره کند ; در غیر این صورت
وظیفه Direction کشک محسوب می شود و نخواهد دانست که عکس العمل خود را به کجا باید بفرستد (چقدر خنگول)
------------------------------------------
تعجب کردید ؟؟؟
اگر اینجوری بشوید شاید امیدی باشه :>
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
اگر اینجوری شاید آره و شاید نه :>
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
اگر اینجوری امیدی نیست :>
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
و اگه اینجوری شد .... >
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
... ( به اولین تیمارستان خودتونو معرفی کنید و با کامپیوتر
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
این کارو نکنید!!!!)
م.ن.ح.خ