PDA

View Full Version : سوال: چگئنگی اضافه شدن خودکار و.... c++ (مهم )



orache
دوشنبه 27 خرداد 1392, 13:44 عصر
سلام اول از همه بگم موضوع در رابطه با C++‎ و ساخت یک پروژه هست مثل نرم افزار هایی مانند 3d max , maya و... (لطفا تا اخرش بخونید )
من یک سوال داشتم من یک تابعی نوشتم که با فراخوانی اون یک جسم ساخته میشه در یک مختصاتی مثلا گذاشتم وقتی کلید a رو بزنیم این تابع فراخوانی شه من کلید a رو میزنم تو برنامه و جسم ساخته میشه پس از ساخته شدن من این جسم رو حرکت میدم و دوباره کلید a رو میزنم و این جسمی که حرکت داده شده از بین میره و یک جسم در همون مختصات اولی که تو تابع نوشته شده ساخته میشه
این جسم فرض میگیریم 20 تا متغیر داره مثلا متغیر مختصات x y z و اندازه ی x y z و رنگ و... چجوری میشه برنامه ای نوشت که به ازای هربار فراخوانی کردن تابع یک جسم اضافه بشه و 20 تا متغیر جدید براش به ثبت برسه منظورمو که فهمیدین ؟؟ این یک مثال فرضی بود حالا جسم یا هرچی دوستا دارین فکر کنن فقط میخام بدونم تو نرم افزار هایی مانند 3d max یا اصلا تمامی گیم انجین ها و... چجوری چنین چیزی میسازن مثلا تو نرم افزار های یک مکعب میسازن جابه جاش میکنن تغییر رنگ اندازه و... میدن و با زدن همون دکمه میشه هزار تا دیگه هم ساخت
لطفا کمک کنین خیلی نیاز دارم

saied_hacker
دوشنبه 27 خرداد 1392, 17:55 عصر
خوب شما میخاین از یه کلاس/شی چند تا بسازی و توی حافظه نگه داری...
خیلی راحت یک لیست بساز و ادرس اونها رو توش نگه دار...

مثلا:
list<My3dElements*> m_List;

هر بار که تابع رو فراخوانی می کنی به لیست بالا اضافش کن اینجوری هم شی جدیدت رو ساختی و هم در حافظه داریشون ...

class My3dElements
{
int x
int y
void func()
//........
}


( کلاس بالا رو شی شما در نظر میگیریم ... )
ایجادش کن و خاستی رسم کن. با ت.جه به توابع کلاست

my3dElements* create()
{
return new My3dElements();
}

m_list.insert(create())

و در اخر به لیست اضافش کن حالا برای تغییر و حذف و .. کافیه شماره ایندکسش رو توی لیست بدست بیار و تغییر بدی ...
اینجوری به تعداد نامحدود میتونی از اون ابجکتت بسازی و بهشون دسترسی داشته باشی

m_list[2].func()

orache
دوشنبه 27 خرداد 1392, 23:36 عصر
سلام
ببین دقیقا حالیم نشد چی گفتی ببین نمیدونم این لیست چیه چون 3 ماه بیشتر نیست که با سی ++ کار میکنم میشه بگی تو کدوم بخشش هست (یعنی کدوم مطلب سی ++ هست ) که برم یاد بگیرمش
من یه چیز دیگه هم میخام نمیخام که کاربر کد رو بنویسه میخام تو محیط برنام اینکار انجام شه فقط با زدن یک کلید متوجه میشی چی میگم که ؟؟ درست مثل انجین ها و نرم افزار هایی مثل تریدی مکس و...

saied_hacker
سه شنبه 28 خرداد 1392, 08:12 صبح
سلام
1- ببین دقیقا حالیم نشد چی گفتی ببین نمیدونم این لیست چیه چون 3 ماه بیشتر نیست که با سی ++ کار میکنم میشه بگی تو کدوم بخشش هست (یعنی کدوم مطلب سی ++ هست ) که برم یاد بگیرمش
2- من یه چیز دیگه هم میخام نمیخام که کاربر کد رو بنویسه میخام تو محیط برنام اینکار انجام شه فقط با زدن یک کلید متوجه میشی چی میگم که ؟؟ درست مثل انجین ها و نرم افزار هایی مثل تریدی مکس و...

1- list جزو بخش STL هست.
WikiPedia: C++‎ STL (http://en.wikipedia.org/wiki/Standard_Template_Library)


2- مثلا یه دکمه add بزاری یه شی جدید اضافه شه و خصوصیات خودشو داشته باشه ... این کارو میتونی با راه بالا راحت انجام بدی ( راه های دیگم هست ).