PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : آموزش قدم به قدم برنامه نویسی سیمبین



CONS†AN†INE
30-07-2007, 11:12
با سلام به علاقه مندان به برنامه نویسی سیمبیان

تو این تاپیک میخوام برنامه نویسی سیمبیان رو که خودم در حال یادگیری هستم بصورت قدم به قدم توضیح بدم
البته اگه با مثال بشه بهتره هم تو درک هم تو استبال شما!!!:mdr:

از دوستان خواهشمندم اگر در حال یادگیری هستند برای دلگرمی و ادامه کار بنده به یک تشکر بسنده کنند و از پست دادن برای تشکر و ادامه کار خود داری کنند.

و دوستانی که تمایل به همکاری دارند با توجه به موضوع اگر مطلبی بیشتر و مفید دارند در اختیار قرار دهند تا تاپیک از بار علمی بیشتری برخوردار باشه.

در ضمن در این تاپیک فقط لینکهای سالم و مطمئن قرار میدهم در غیر این صورت سایت مرجع را معرفی میکنم

توصیه بعدی بنده این است که به علت بالا بودن حجم برنامه ها برنامه ها ار از بیرون خریداری کنید تا هم از اطلاف وقت گرفته شود و هم از صحت برنامه ها مطلع باشید:merci:

از مدیران محترم هم درخواست دارم که هوای مارو هم داشته باشند:loveit:

امیدوارم دوستاران به برنامه نویسی منو با تشکراشون همراهی کنند تا من بتونم با دلگرمی به کار ادامه بدم:111:

در ضمن این تاپیک رو من فقط یک بار در روز اپ میکنم!:lol:

خیلی خوب مثل اینکه زیاد حرف زدم بهتر کارو شروع کنم

iceboy1981
30-07-2007, 11:24
سلام ، سيمبيان چون يك سيستم عامل جديد و نوپايي هستش همه دوست دارند اونو ياد بگيرند .
پس اگه ميتوني اين تاپيك را با جديت كامل انجام بده . :hello:

CONS†AN†INE
30-07-2007, 11:35
برای برنامه نویسی سیمبیان باید یک زبان برنامه نویسی مثل ++Visual C++ Or C
رو یاد داشته باشین در اینجا برای سهولت در یادگیری از ++VC استفاده میکنیم.


برای کار شما باید یک SDK داشته باشید برا ی هر موبایل و سیستم عاملش فرق میکنه

بعد از اون شما به Active Perl بهتره این نسخه باشه 5.8.7Build 813

نصب SDK

اگر مراحل نصب را درست طی نکنید SDK شما اجرا نخواهد شد!

در اینجا SDK ما Series60 است.

در این مسیر نصب شود C:\Symbian\7.0s\Series60

بعد از نصب برای اجرای امولیتور SDK به این مسیر بروید:

Start -> Programs -> Symbian 6.1 SDKs -> Series 60 -> Emulator Debug or Release

نصب Active Perl

هنگام نصب مسیر اکتیو پرل را به C:\perl تغییر دهید

برای پی بردن به درستی انجام کار یک DOS PROMPT
باز کنید و دستور زیر رو بنویسد که این دستور help برنامه رو نشان میدهد Perl –h اگر اجرا نشد به مسیر زیر برید

Start -> Settings -> Control Panel -> System -> Advanced -> Environment Variable

و در تب بالا گزینه path رو انتخاب و به صورت زیر Edit کنید
( البته به اخر اون اضافه کنید و اگر وجود نداشت اون رو بسازید - ویندوز من در درایو d: نصب شده شما درایو d: رو به درایو خودتون تغییر بدید)

C:\Symbian\7.0s\Series60\epoc32\tools;C:\Symbian\7 .0s\Series60\epoc32\gcc\bin;D:\Program Files\Common Files\SYMBIAN\Tools;C:\Perl\bin\;%SystemRoot%\syst em32;%SystemRoot%;%SystemRoot% \System32\Wbem;%EPOCPATH%;

و دوباره دستور بالا رو اجرا کنید و نتیجه رو چک کنید و اگر دوباره کار نکرد برنامه Active perl رو
پاک و دوباره نصب و کارهای بالا رو انجام بدید تا برنامه کاملا نصب بشود.

شما برنامه های مورد نیاز برای شروع کار را نصب کرده اید فردا اولین جلسه رو شروع میکنیم تا
فردا خودتون رو اماده کنید :loveit:

CONS†AN†INE
31-07-2007, 12:04
وارد کردن برنامه به SDK

برای این کار شما به مسیر زیر برید

در مسیر C:\Symbian\7.0s\Series60\Series60Ex خود SDK مثال های آموزشی خوبی رو گذاشته که ما ساده ترین یعنی helloworldbasic رو انتخاب می کنیم

اگر شما بر روی helloworldbasic کلیک کنید چهار فهرست مشاهده
می کنید

1) group : جایی که فایل پروژه وجود داره

2) inc : هدر فایل در این فهرست قرار میگیره

3) src: که در این فهرست cpp های فایل یا همون سورس فایل قرار داره

4) sis : در این فهرست فایل pkg که ما sis رو از اون درست می کنیم

این چهار فهرست رو ما برای برنامه نویسی همیشه لازم داریم .

یه dos prompt باز کنید و به مسیر group برنامه helloword basic برید حالا درستور bldmake bldfiles رو بنویسید

و منتظر دیدن اعلان داس بشدید ( منظور اینکه دوباره به خط فرمان داس در خط زیر بر می گرید و چیزی چاپ نمی شه)

ما حالا فایلی به نام ABLD.BAT در همون مسیر داریم که می تونیم برای ساخت پروژه در ++VC یا کامپایل فایل ها استفاده می کنیم

حالا ما از دستور abld build wins استفاده می کنیم

با اجرای این دستور می تونیم برنامه هارو کامپایل و تست در ویندوز ( امولیتور sdk ) استفاده کنیم
این درستور یک سری سویچ ها دراره که من این ها رو بعدن می گم فلا شما از abld build wins رو اجرا کنید

بعد از اینکه برنامه کاراشو کرد ( البته به درستی ) دستور epoc رو اجرا کنید تا امولیتور اجرا بشه و شما در صفحه مو بایل برنامه helloword basic اخرین گزینه دارین .


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

:exclaim: توضیحات امروز:

ما کامپایل کردن برانامه و اجرای اون در امولیتور رو یاد گرفتیم حالا در مورد ABLD بیشتر توضیح میدهم

توجه کنید که ما از کد مون می تونیم دو ورژن بسازیم (تست در ویندوز – فلاش کردن در گوشی) یکی از آن ها به نام Debug است که ما با دستور abld build wins udeb
اون رو می سازیم و دیگری به نام Release است که ما برای ساختنش از دستور
abld build wins urel استفاده می کنیم.

دیباگ برای تست کردن( تست نهایی) استفاده می شه که ما می تونیم خط به خط کد رو دنبال کنیم. و ریلیز رو زمانی که کد اماده برای Run رو موبایل استفاده می کنیم.

برای پیشرفت کار 2-3 بار مراحل را تکرار کنید تا کاملا یاد بگیرید.

امید وارم مطالب مفید باشه:loveit:

CONS†AN†INE
01-08-2007, 16:28
این دو دستوری رو که در بالا گفتم زمانی که ما بخوایم کد رو در کامپیوتر و روی ویندوز امتحان و از صحت کار و یا پیدا کردن ایراد اجرا می کنیم

و وقتی که کد ما از هر لحاظ آماده شد یعنی زمان ایجاد SiS ( که مانند سوزاندن برنام بر روی CD هست) از دستور abld build thumb استفاده می کنیم که فایل باینری ایجاد و ما می تونیم برنامه رو در موبایل اجرا کنیم.


:exclaim: مشکل 1: اگر شما دستورات بالا رو اجرا کردید و برنامه مشکل از پیدا کردن فایل های مختلف مثل Header و.... می گیره عملیات زیر رو انجام بدید

هنگام نصب دیدم که در فهرست نصب symbian یه فهرست به نام eopc32 وجود داره برای اینکه مشکل پیدا کردن فایل ایجاد نشه ما epoc32 را root دایرکتوری میکنیم.
برای این منظور دستور زیر رو در dos Prompt اجرا کنید

Subst drivename: c:\Symbian\...\ Series60

Drivename: یه اسم برا درایوتون بزارید مثلا n:
مسیر رو شما کامل تا Series60 بنویسید شما می تونید این دستور رو در یه فایل BAT بذارید و اون فایل رو در startup ویندوز قرار بدید که با بالا اومدن سیستم دستور اجرا و eopc32 root دایرکتوری بشه

از این به بعد از درایو جدی (n: ) که درست کردیم برای کامپایل- ساختن و یا باز کردن پروژه ++VCخودمون استفاده می کنیم و دیگه کاری با درایو c: نداریم!

حالا به درایو n: می ریم و دستورات زیر رو برای کامپایل فایل های مختلف پروژه انجام می دیم .

یادتون نره که اول abldmake bldfiles رو Run کنید که ABLD فایل درست ساخته بشه

Start/run/cmd
N:
Cd series60x
Cd helloworld
Cd group
Bldmake bldfiles
Abld build wins
epoc

:exclaim: مشکل 2: بار اول که من می خواستم abld.bat رو بسازم یه error به صورت زیر می داد error :EPOC ROOT must not include a drive latter… مشکل رو به صورت زیر باید حل کنیم.

ما باید EPOCROOT خودمون رو عوض کنیم به مسیر زیر برین

Settings / Control Panel / System /click on Environment Variables

در قسمت System variable گزینه Epocroot رو کلیک و مقدار اون رو به \ (بک اسلش) تغییر بدید . این دفعه اگه بخوایم فایل abld.bat رو درست کنیم مشکل حل می شه تموم شد !!!

از جلسه بعد ما باز کردن برنامه در vc++ رو یاد می گیری دیگه داره به جاهای خوب خوب میرسه:loveit:

CONS†AN†INE
01-08-2007, 16:35
خیلی جالبه اینهمه عضو هیچکی از این تاپیک استقبال نکرد خوب پس مدیر جان با این وضع درشو تخته کن!!!:realmad:

میگی بیا اموزش بزار بعد هیچ نظری نه تشکری اخه با چه امیدی اموزش بدم !!!!:coonfused:

اخه برای کی!!!:arrow:

CONS†AN†INE
02-08-2007, 13:33
ما تا اینجا نحوه اجرا کامپایل تست و sis کردن کد رو یاد گرفیتم حالا اگر بخوایم کد رو عوض ( برنامه نویسی ) کنیم چکار باید انجام بدیم

خو ب برای یه پروژه مراحل زیر رو انجام بدید.

دستور های زیر رو در DOS prompt بنویسید و به درایو C: نرید همون درایوی که قبلا ساختیم برید n:))

N:
cd Series60Ex
cd helloworld
cd group
abld makefile vc6

با اجرای دستور abld makefile vc6 پروژه ویژوال سی پلاس پلاس درست می شه

برنامه vc++ خودتون رو راه بندازید و قسمت File/ Open workspacرو انتخاب کنید
و به درایو ساخته شده (n: ) برید و مسیر epoc32/BUILD رو انتخاب کنید پروژه hello world رو که برای ویندوز ساخته شده از مسیر زیر انتخاب کنید

Epoc32/BUILD/Series60Ex/helloworld/Group/helloworld/WINS

پروژه ساخته شده رو انتخاب و باز کنید

اگر روي FileView كليك كنيد ليست تمام سي پي پي فايل ها و هدر فايل ها را مي بينيد
حالاما مس تونیم با پروژه هر جوری که عادت داریم تو vc++ کار کنیم.
مثلا با F7 می تونیم فایل ها رو کامپایا کنیم ( که ما قبلا این کارو تو dosprompt انجام می دادیم)

با f5 می تونید برنامه رو خط به خط چک دیباگ کنید و اگر روی منوی build کلیک کنید امکانات دیگه رو هم دارید.

حالا شما دکمه f7 رو فشار بدید که پروژه ساخته بشه و شما 0 Error ( البته اگه کارهای قبلی رو درست انجام داده باشید) خواهید دید .

اگر در هنگام کامپایل ایراد گرفت که فایلی پیدا نمیشه شما در PATH مشکل دارب
د
حالا بعد ار کامپایل که ایراد نگرفت می تونید دیباگ رو به راه بندازید برای این منظور
تو یه قسمت از کد کلید F9 رو بزنید و امولیتور رو در حالت دیباگ به راه بیندازید که تمام اطلاعات راه اندازی رو در output vc++ خواهید دید .

اولین باری که شما برنامه رو اجرا می کنید از شما فایل مسیر epoc.exe رو می پرسه که شما مسیر epoc رو در حالت UDEB بهش بدید Epoc32\Release\wins\udeb\epoc.exe

بعد از راه افتادن امولیتور شما ایکون helloworld رو در امولیتور خواهید دیدحالا اگر مثلا شما منوی option برنامه رو کلیک کنید و تو برنامه همون قسمت رو f9 یا break point کرده باشید برنامه همون جا وا میسه حالا می تونید کد رو خط به خط به رونید با کلید f10


خوب دوستای عزیز فکر کنم چیزهایی که نیاز داشتیم فعلا یاد گرفیتم و از این به بعد رو واقعا دیگه باید برنامه نویسی بلد باشید :loveit:

جلسه بعدی زمانی میشه که حداقل سه چهار نفر تونسته باشن یه برنامه از exsample های SDK رو کامپایل و تو تایپیک گذاشته باشند (البته فکر نمیکنم چون کسی به برنامه نویسی سیمبیان که علاقه ندارن دوست ندارن برای خودشون برنامه بنویسن باید بزودی درشو تخته کنم!):coonfused:

CONS†AN†INE
03-08-2007, 12:25
در این جلسه به رفتار های احتمالی که برنامه انجام میدهد را اموزش میدهیم (البته اگر برنامه هارا اجرا کرده باشید)

خوب کار رو شروع میکنیم

ممکن است برنامه شما در شبیه ساز هنگ کند می توان کاری کرد که به جای هنگ گردن یک پیغام اخطار مناسبی نمایش دهد برای فعال کردن این ویژگی یک فایل خروجی بانام
Errd در پوشه c:\Symbian\6.1\series60\Epoc32\wins\c\system\bootd ata ایجاد کنید.

به همین راحتی

هنگامی که برای اولین بار c++ BuilderX را اجرا می کنید برنامه نیاز به رجیستر شدن دارد.

مورد activation file را انتخاب و مسیرفایلی را که بورلند هنگام دانلود نرم افزار برای شما فرستاده
بود را مشخص کنید

انتخاب یک IDE (محیط برنامه نویسی)
ابزارهای ساخت سیمبین در حقیقت دستوری هستند و بدون هیچ گونه محیط برنامه نویسی کار می کنند .

ولی به هر حال اگر شما یک ide داشته باشید برنامه نویسی خیلی راحت تر خواهد شد

انتخاب های زیادی وجود دارد که هر کدام مزیت ها و نقص هایی دارند:

Microsoft visual c++ 6: سریع کامپایلر و دیباگر کارامد. بعضی ابزارها برای سیستم عامل قابل دسترسی قدیمی و پشتیبانی حقیقی از سیستم عامل سیمبین ندارد

:Microsoft Visual Studio .netسریع مدرن خوب وپرکاربرد به طور مستقیم از sdk های سیمبین پشتیبانی نمی کند برنامه نویسی برای سیستم عامل سیمبین توسط آن پیچیده است و گران می باشد

Metrowerks CodeWarrior:حداقل از سیستم عامل سیمبین پشتیبانی می کند این محیط برای مبتدیان سخت وپیچیده است

Borland C++ BuilderX Mobile Edition: طراحی تصویری منوها و پنجره های محاوره را پشتیبانی می کنئ و رایگان می باشد یک محیط کند و بدترکیب است پشتیبانی از سیستم عامل سیمبین می توانست بیشتر از این باشد

همان طور که می بینید هیچ محیطی بهترین برای برنامه نویسی سیستم عامل سیمبین نمی باشد برای این خود آموز Borland c++ BuilderX انتخاب شده است زیرا رایگان است و دارای پیچیدگی زیادی برای مبتدیان نیست.

من خودم چون دوستدارم کامل برنامه نویسی رو یاد بگیرم به همین علت بصورت خیلی ساده مطالب رو بیان میکنم تا همه بفهمند به توصیه یکی از دوستان هنوز به کار ادامه میدم:loveit:

bizdah
03-08-2007, 18:04
اگه میشه برای uiq 3.0 توضیح بدید
متشکرم
همچنین اگه میشه آدرسی برای دانلود این ide ها معرفی کنید

CONS†AN†INE
03-08-2007, 19:05
اگه میشه برای uiq 3.0 توضیح بدید
متشکرم
همچنین اگه میشه آدرسی برای دانلود این ide ها معرفی کنید

زمانی که شما برنامه نویسی سیمبیان به صورت جامع رو یاد بگیرید میتوانید به راحتی برای UIQ3 برنامه نویسی کنید

در مورد لینک دانلود برای برنامه ها IDE در پست اول توضیح دادم بعلت بالا بودن حجم برنامه ها بهتر این برنامه ها رو از بیرون تهیه کنید که هم از سلامت برنامه ها مطمئن باشید هم صرفه اقتصادی بیشتری دارد.:loveit:

naser6600
04-08-2007, 01:26
خيلي خوبه ادامه بديد
حتما

CONS†AN†INE
04-08-2007, 15:06
دوست داران برنامه نویسی امیدوارم که جلسات قبل رو بدون هیچ مشکلی انجام داده باشید از این به بعد یکمی باید حواستون رو جمع کنید چون بحث رو بیشتر باز میکنم:flower:

شروع میکنیم!

انتخاب sdk سری 60

sdk سری 60 برای سیستم عامل سیمبین اکنون در ویرایش های بالاتر گوشی های سری 60 جدیدتر را هدف گرفته اند نیز قابل دسترسی است.

تاکنون تمام دستگاها مدل های قبلی را پشتیبانی می کنند بنابراین برنامه ای که سیستم عامل سیمبین 6.x نوشته شده است (توسط sdk v1.2) در سیمبین های جدید 7.0 و 8.0 نیز کار می کند.

درست است که برنامه های کامپایل شده توسط sdk v2.0 (که در حقیقت گوشی nokia 6600 با سیمبین v7.0 را هدف گرفته است) در مدل های قدیمی کار می کنند

ولی این مسئله می تواند مقداری مشکل ساز باشد اگر سورس کد توسط sdk های جدید کامپایل شود فایل های به حالت باینری به هیچ وجه در مدل های قدیمی کار نخواهد کرد!!

این که از کدام sdk استفاده کنید به انتخاب خودتان است اگر شما می خواهید که فقط برای گوشی های جدید برنامه بنویسید ویا اگر می خواهید کار جدید انجام دهید که قبلا ممکن نبود از sdk 2.0 استفاده کنید لود کردن تصاویر وصداها دراین ویرایش بهبود یافته است کار اینترنتی خیلی راحت شده است

اگر می خواهید برنامه تجاری بنویسید که برای گروه زیادی از مردم قابل استفاده باشد نباید گوشی های سری 60 را نادیده بگیرید شما با انتخاب سری 60 پتانسیل بازار خود را
محدود می کنید حال اگر برنامه شما فقط گوشی های جدید را پشتیبانی کند شما بازارتان بسیار محدودتر خواهد بود.



حال موقع آن است که کار را شروع کنیم

c++builderX را اجرا کنید به مسیر tools \ symbian Sdk configuration بروید یک پیکر بندی جدید توسط الگوی Sdk یی که نصب کرده اید

ایجاد کنید در این مورد :
(Symbian series 60 1.x Microsoft version ) . برای sdk 1.2 از ویرایش Borland sdk استفاده نکنید. وگرنه برنامه کامپایل نخواهد شد مسیر را C:\Symbian\6.1\Series60 تنظیم
و یک نام مناسب مانند series 60 1.2 انتخاب کنید

گام 2: ایجاد یک پروژه جدید
یک پروژه جدید از مسیر file  new…  series 60 GUI Application ایجاد نمایید.


نام پروژه را Mopoid قرار دهید ( از نام دیگری برای این پروژه استفاده نکنید زیرا بعضی از فایل های از قبل نوشته شده که بعدا ضمیمه خواهیم کرد کار نمی کنند)

آن را در مسیر c:\ symbian \ dev قرار دهید و به c++ builderX اجازه دهید یک زیر پوشه برای این پروژه بسازد که در این صورت پروژه های شما جدا از هم نگه داری می شوند

به مر حله بعدی رفته و همان نام را برای پروژه وارد کنید (Mopoid) به علت این که ما می خواهیم یک بازی بنویسیم گزینه fullscreen را به عنوان view type انتخاب می کنیم

UID3 که به طور پیش فرض توسط c++ BuilderX پیشنهاد می شود ، نباید استفاده شود UID را به چیزی بین 0x01000000 و 0x0fffffff (id های رزرو شده برای تست کردن
پروژه ها تغییر دهید )

توضیح : هر برنامه نصب شده در گوشی باید یک UID منحصر به فرد داشته باشد بنابراین اگر می خواهید که بازی خود را عمومی کنید یک email به آدرس uid@symbiandevnet.com
بفرستتید که باید حاوی نام شما و تعداد UID های مورد نیازتان باشد( برای شروع 5 تا uid کافی است) آنها UID ها را در اولین زمان ممکن برای شما می فرستند.

روش فوق که گفته شد قبلا استفاده می شده اکنون برای انجام این کار باید در سایت http://www.symbiansigned.com ثبت نام کنید و بعد از وارد شدن به سایت در سمت
چپ گزینه request UiDs انتخاب و تعداد UID های مورد نیاز را بنویسید به شما یک بازه داده می شود که تما اعداد داخل بازه مخصوص شما است.
و همچنین می توانید اطلاعات مختلفی در باره UID ها و انواع آن کسب کنید.

CONS†AN†INE
05-08-2007, 14:55
اول از همه از دوستانی که با تشکراشون منو دلگرم نگه میدارم ممنونم:loveit:

و مطمئن باشن که همینطور به کار ادامه میدم :flower:

خوب توی اینجلسه اول از همه میریم برای تست پروژه



تست کردن پروژه

اکنون وقت آن است که پروژه را امتحان کنید تا ببینید که آیا همه تنظیمات درست وارد شده اند یا خیر.


دکه run Project را فشار دهید.

اگر همه چیز به درستی کار کند شبیه ساز بعد از مدت کوتاهی نشان داده خواهد شد. اگر مایلید که سرعت مقداری بیشتر شود. جستجوگر ویروس مقیم حافظه را غیر فعال کنید.

برنامه شخصی شما در پایین Menu قرار داده خواهد شد.پس برای انتخاب کردن آن توسط کلیدهای جابجایی به پایین حرکت کنید.

اگر نمی خواهید که همیشه هنگام تست کردن به پایین menu بروید، آن را انتخاب کنید، کلید سمت چپ(options)را بزنید، Move را انتخاب کنید و آن را به بالای menu انتقال دهید

اگر شما شبیه ساز را ببندید و دوباره باز کنید با هم در موقعیت تنظیم شده باقی خواهد ماند.

هنگامی که شما برنامه mopoid را اجرا می کنید ، شما فقط یک صفحه سفید خواهید دید.

به این علت که ما انتخاب کردیم که یک برنامه تمام صفحه ایجاد کنیم، که هنوز هیچ
وضعیت مرئی در نوار منو ندارد.

هنگامی که کلید چپ شبیه ساز را می زنید، یک منوی پیش فرض نشان داده خواهد شد..

در مرحله بعدی این منو را طبق نیاز خودمان تنظیم خواهیم کرد.

خوب امروز یکم کار دارم برای همین زود تموم کردم ولی خوب فردا بیشتر مینویسم:111:

در جلسه بعد روی شناسایی Error ها کار میکنیم :loveit:

FARID
05-08-2007, 20:01
آقا حمید رضا با قدرت به کارت ادامه بده.
تاپیک مهم شد.

CONS†AN†INE
06-08-2007, 14:51
اول از همه از اقا فرید به خاطر اینکه همیشه هوای منو داشتن تشکر میکنم :flower:

خوب میریم سر مطالب جلسه هفتم.:loveit:

شناسایی خطا ها و رفع انها:

اگرVisual Studio .net یا Microsoft Toolkit در رایانه شما نصب شده است و C++BuilderX از آن
کامپایلرها برای SDK v1.2 سری 60 استفاده می کند ممکن است خطای زیر رادریافت
کنید.

LNK2019 : unresolved external symbol____ftol2

برای حل این مشکل ، فایل c:\symbian\6.1\shared\EPOC32\Tools\cl_win.pm را در یک ویرایشگر متن مثلا Notepad باز کنید

و به دنبال خطی بگردید که حاوی /W4 است و سپس آن را به
CLFLAGs = / nologo /Zp4 /W4

/QIfist (دقیقا متن نوشته شده) تغییر دهید.

(شماپارامتر /QIfist را به گزینه ها افزودید.)

اگر C++Builderx، هنگام ساخت خطایی شبیه زیر ایجاد کند:

Can't locate E32env.pm in @INC […]

یک راه حل ممکن این است که دو مسیر زیر را در ابتدای مسیر متغییر محیط قرار دهید.

C:\symbian\6.1\shared\epoc32\gcc\bin;c:\symbian\6. 1\shared\epoc32\tools;

اگر این روش کار نکرد مطمئن شوید که Perl نصب شده است و SDK سیستم عامل سیمبین را نصب تعمیری (repair install) کنید.

مطمئن شوید که SDK بعد از Perl بر روی سیستم نصب شده است.

حتما بعد از پایان تست کردن پروژتان پنجره شبیه ساز را ببنید.

اگر شما بخواهید پروژه را کامل کنید در حالی که شبیه ساز هنوز در پس زمینه در حال اجرا است، خطاهای مختلفی دریافت خواهید کرد.

تعریف کردن رشته ها ( String)

به طور پیش فرض فایل MopoidContainer.akn باید فعال باشد. اگر نیست آن را از طریق پنجره پروژه در سمت چپ اجرا کنید.

Mopoid.cbx  symbian project (bld.inf)  Mopoid.mmp  Designs  MopoidContainer.akn

( از طریقدابل کلیک).

برای طراحی منو های خودمان ، اول باید متنی که می خواهیم استفاده کنیم را تعریف نماییم.

در سیستم عامل سیمبین متن ها معمولا در فایل های منبع (resource) تعریف میشوند

این جمع و جور کردن برنامه ها را آسانتر می کند ، به علت اینکه برنامه های موبایل جهانی هستند شاید بخواهید بازی شما در بیش از یک زبان قابل دسترسی باشد.

اگر از فایل های منبع استفاده نکنید، در میان انبوه متون چند زبانه و گوناگون سردرگم خواهید شد.

به طرح String Table بروید:

در این بازی ما می خواهیم یک منوی ساده داشته باشیم که به ما اجازه دهید که یک بازی جدید را شروع کنیم، یک پنجره محاوره (درباره برنامه) را نشان می دهیم و از بازی خارج می شویم.

بنابر این چهار رشته زیر را تعریف می کنید:

برای پیغام در پنجره محاوره (r_aboutmessage) شما ابتدا مجبورید که max Length را به حدود 60 تعییر دهید( برای این بازی) بنابراین شما فضای کافی برای پیغام خود خواهید داشت.

برای ایجاد سطر جدید. می توانید از عبارت \n استفاده کنید.

همیشه بعد از اتمام نوشتن متن در سلول کلید enter را فشار دهید تا مطمئن شوید که C++BuilderX متن جدید شما را نگهداری کی کند.

توجه: در این آموزش اسامی را دقیقا همانطور که نوشته شده وارد کنید در یکی از مراحل بعدی شما چند سورس کد از قبل نوشته شده را به پروژه خود اضافه خواهید کرد که تعاریف
نام مختلفی خواهند داشت.

دوستانی که مطالب را دنبال میکنند اگر در جایی مطالب با هم همخوانی ندارد به خوبی خودشون ببخشند:merci:

چون من این اموزش را مبتنی بر تجربیات خودم و استفاده از اموزشهای دیگر که به درک مطالب کمک میکنند تهیه میکنم

تا جلسه بعد کاملا مطالب را انجام دهید :loveit:

miramir
07-08-2007, 13:58
بخشید من تازه این تاپیک رو دیدم و میخواستم بدونم sdk رو از کجا میشه گیر آورد

CONS†AN†INE
07-08-2007, 16:02
بخشید من تازه این تاپیک رو دیدم و میخواستم بدونم sdk رو از کجا میشه گیر آورد

دوست عزیز در پست اول اگه میخوندی میفهمیدی

به هر حال شما بهتره که این SKD ها رو از بیرون تهیه کنی چون حجم بسیار زیادی دارن و به صرفه نیست که دانلود کنی در ضمن در پکهای اموزش برنامه نویسی برای موبایل در بازار موجود هست:loveit:

CONS†AN†INE
07-08-2007, 16:12
داریم به جاهای شیرین میرسیم:lol:

تو این جلسه نحوه تعریف منو رو یاد میگیریم


تعریف کردن منوها

اکنون وقت آن است که از رشته هایی که تعریف کرده ایم در بازی استفاده کنیم.

به Menu Desigenr بروید می بینید که C++ BuilderX از قبل دو منو برای شما ایجاد کرده استو ما یک منوی دیگر هم نیاز داریم، پس از panel سمت چپ ابزار Menu Item را انتخاب کنید و روی منو به منظور اضافه کردن یک آیتم جدید کلیک نمایید.

حالا منوی های جدید را طوری تنظیم خواهیم کرد که از متنی که ما تعریف کردیم استفاده کنند.

روی iMenuItem1 کلیک کنید تا انتخاب شود. در panel سمت راست نام آن را بهiMenuItemNewGame تغییر دهید.

برای متن آن نیز فقط عبارت r_stargame را به عنوان ID انتخاب کنید. Command را با مقدار پیش فرض (1001) رها کنید.

توجه: زدن Enter پس از تغییر یک مقدار ضروری است . اگر شما فقط توسط ماوس یا کلیدهای مکان نما به جای دیگری بروید ممکن است ورودی شما ذخیره نشود.

سپس نام iMenuItem2 را به iMenuItemAbout تغییر دهید.

کلمه r_about را به عنوان ID انتخاب کنید. مقدار 1002 برای command مناسب است.
همچنین flag دوم یعنی EeikMenuItemSeparatorAfter را نیز علامت بزنید.

این flag یک خط کوچک در زیر منو ایجاد خواهد کرد که به صورت تصویری دستور سوم exit را از بقیه جدا خواهد کرد.
آخرین مورد منویی است که برای خروج از برنامه بکار می رود.

نام آن را از iMenuItem3 به iMenuItemExit تغییر دهید و از عبارت r_exit به عنوان Text_ID استفاده کنید.

اکنون command ID را پیش فرض نگه نخواهیم داشت،

از EAknCmdExit به عنوان Command استفاده می کنیم. این دستور همچنین هنگامی که سیستم عامل بخواهد برنامه را ببندد ارسال می شود، برای مثال هنگامی که گوشی حافظه باقیمانده کافی نداشته باشد.

بنابراین ضروری است که هر برنامه ای همیشه به این رویداد پاسخ دهد و برنامه را ببندد.

حالا اگر بازی را تست کنید، خواهید دید که منوی Exit به درستی کار خواهد کرد.

هنگامی که در آینده بازی را تست می کنید، همیشه توسط Exit از برنامه خارج شوید و فقط شبیه ساز را نبندید به این علت که محیط شبیه ساز همیشه به طور اتوماتیک حافظه را بررسی می کند و در صورت وجود رخنه به شما اطلاع می دهد.

اگر شما فقط شبیه ساز را ببندید، هنگام باز کردن مدت زیادی طول خواهد کشید که باعث میشود پیدا کردن علت خیلی سخت تر گردد.

یواش یواش داره شبیه برنامه میشه ها:loveit:

تا جلسه بعد:na:

CONS†AN†INE
08-08-2007, 15:58
دوباره سلام :loveit:

توی جلسه قبل نحوه ساختن منو رو یاد گرفتیم حالا میخوایم یک پنجره توضیحی درست کنیم

پس همراه باشید تا یاد بگیرین اینم مثل منو خیلی ساده هست:lol:

تا الان ما یک برنامه کوچک با منوی اختصاصی اش بدون نوشتن هیچ کدی ایجاد کرده ایم

برای نشان دادن پنجرده محاوره About اولین کد را خواهیم نوشت به نمای طراحی Non-Visual بروید

از panel سمت چپ CAknInformationNote را انتخاب کنید.


این مورد یک پنجره ساده کوچک است که متن شما و یک آیکن از پیش تعریف شده را در برمیگیرد. سپس ، در یک جایی از منطقه سفید وسطی کلیک کنید تاNote ایجاد شود.


در پنجره ویژگی ها (properties) درسمت راست، نام آن را به iAknAboutNote تغییر دهید و r_aboutmessege را به عنوان Text-ID انتخاب کنید.

اکنون ما پنجره About را تعریف کرده ایم، برای نمایش دادن آن ما فقط باید آن را به منوی about متصل کنیم. به Menu Designer بروید و منوی About را انتخاب کنید


در بخش Proprties در سمت راست، به قسمت Events بروید.

در جعبه متن خالی که پس از عبارت OnViewCommand قراردارد دوبار کلیک کنید
++BuilderX به طور اتوماتیک یک تابع برای شما ایجاد می کند که هنگامی که کاربر منوی About را انتخاب کرد، صدا زده شود.

ولی قبل از نوشتن هرگونه کد به MopoidContainer.akn بروید ونام تابعی را که IDE جدیدا ایجاد کرده است را به OniMenuItemAboutViewCommandL
(با اضافه کردن یک L به انتهای آن) تغییر دهید.

Enter را فشاد داده و سپس C++BuilderX شما را دوباره به تابع می برد، اکنون تابع نام تصحصح شده را دارد.

اکنون، این کد را در یک تابع جدید در فایل MopoidContainer.cpp بنویسید.

;()ExecuteiAknAboutNotel

این خط اجرای تابعی است که C++BuilderX قبلا برای ما ایجاد کرده است.

اگر برنامه را تست کنید، پنجره About به درستی کار خواهد کرد.

ولی مطمئن هستم که این سوال برای شما پیش آمده که چرا L را به انتهای نام تابع اضافه کرده ایم ، پس بیایید بررسی کنیم که چرا L را به انتهای نام Function اضافه کردیم.


توجه داشته باشید که تابع ExecuteiAknAboutNoteL() خودش یک L در انتهای نامش دارد .چرا اینگونه است؟

به این علت که حافظه در این تابع تخصیص یافته است( برای ایجاد ونمایش پنجره های محاوره) و به همین خاطر این پروسته امکان دارد به طور کامل انجام نشود.

در حال حاضر، گوشی های موبایل منابع محدودی دارند بنابراین خیلی مهم است که همیشه احتیاط کنید که اگر سیستم عامل نتواند منابع مورد نیاز برنامه شما را تدارک ببیند چه اتفاقی می افتد ( این اصل پایه و اساسی در هنگام طراحی سیستم عامل سیمبین بوده است).


این رویدادها، همانند error های دیگر (مثل File not Found ) توسط سیستمی کنترل می شوند که شبیه به catch جاوا وC++ جدید است.


یک error منتظر می ماند تا زمانی که کسی آن را مدیریت کند. افزودن L به انتهای تابع یک قرار داد عمومی است که از طریق آن به برنامه نویس می گوییم که اگر در سیستم حافظه کافی وجود نداشته باشد، اجرای این تابع ضروری نیست.

تابع که پیام ما را نمایش می دهد، در صورت عدم وجود حافظه کافی اجرا نمی شود.

طبیعتا شما نمی توانید این مشکل را رفع کنید و باید به سیستم اجازه دهید که error مناسب را نشان دهد. اگر خودتان تمام error ها را مدیریت کنید، برنامه شما بسیار بزرگ خواهد شد.

OniMenuItemAboutViewCommandL() نیز می تواند به طور کامل اجرا نشود. بنابراین، ما L را به انتهای آن اضافه کرده ایم.


تا حالا C++BuilderX یک تابع با نام DispatchViewCommandEvents() نوشته است که دنبال آن توضیح (( این روتین توسط C++BuilderX ایجاد شده است آن را تغییر ندهید)) است، آمده است.


توجه کنید که حرف L در انتهای آن نیامده است. اگر ما خودمان آن را اضافه کنیم، C++Builderx این تابع رادیگر نخواهد شناخت. اگر به فایل MopoidView.cpp بروید HandleCommandL() را خواهید دید. این تابعی است که هرگاه کاربر منویAbout را انتخاب کرد توسط سیستم عامل صدا زده می شود.


بنا براین، به خاطر انعصاف پذیری های کم IDE ، ما از قبل مقدار کمی کد داریم که با استاندارد های کد نویسی سیستم عامل سیمبین همخوانی ندارد. در این مود نادیده می گیریم، همانطور که L برای سیستم نیست و فقط یک چیز کمکی برا ما برنامه نویس ها است.

ولی یک بهانه خوب برای شرح دادن نکات اساسی سیستم و نشان دادن محدودیت کدهای ایجاد شده توسط C++BuilderX برای ما می باشد.:loveit:

دوستان تا اینجا اموزش روی یک برنامه معمولی است ولی در جلسات بعدی در مورد برنامه بازی ها صحبت خواهیم کرد که انها چگونه کار میکنن و موتور انها چگونه نوشته میشود:flower:


اگه اموزشها رو خوب دنبال کنید قول میدم برای خودتون Doom4 و Call Of Duty 5 رو بنویسید:lol::lol::lol:

CONS†AN†INE
08-08-2007, 16:32
دوستان اگه مطالب بدردشون میخوره و اموزنده هست یک تشکر بکنن باعث دلگرمی بنده میشود

جای دوری نمیره:loveit:

CONS†AN†INE
09-08-2007, 15:21
تو اینجلسه میخوایم برنامه رو تست واقعی کنیم:loveit:

فرستادن برنامه به گوشی موبایل

طبیعتا شبیه ساز به خوبی کار می کند، ولی بهتر است از مواقعی که فایل در شبیه ساز ویندوز درست کار می کند ولی در گوشی کار نمی کند آگاهی یابید.

برای مثال متغییرهای استاتیک که در شبیه ساز به خوبی کار می کنند ولی در گوشی موبایل کار نمی کنند. به علت اینکه اشکالزدایی مستقیم در موبایل سخت است و بعضی مواقع کار نمی کند و سیستم فقط پیغام system error می دهد،

یافتن علت کار نکردن برنامه در موبایل سخت است، ولی اگر به طور منظم برنامه را در موبایل امتحان کنید، پیدا کردن اشکالات راحت تر خواهد شد.


برای اینکه به IDE بگویید که می خواهید برای دستگاه موبایل برنامه بسازید ، باید پلت فرم مقصد برای برنامه کامپایل را به ARMI تغییر دهید.


(پردازنده گوشی سری 60 شما یک پردازنده ARM است) و نوع آن را به UREL(ویرایش انتشاری) تغییر دهید.

برای ساخت پروژتان به مسیرProject  Make project 'Mopoid.cbx" بروید.(میتوایند Ctrl+F9 را هم بزنید)

بعد از اینکه این پروسه تمام شد، یک فایل با نام Mopoid_ARMI_UREL_sis در پوشه C:\Symbian\dev\Mopoid\group مستقر خواهد شد.

این فایل را به گوشی خود انتقال دهید و آن را نصب کنید.

حتما راه های انتقال فایل به گوشی رو که می تونه از طریق بلوتوث یا کابل یا اینفرارد و یا رم ریدر باشه رو بلد هستید.

اگر همه چیز به درستی کار کند، فراموش نکنید که برای ادامه برنامه نویسی تنظیمات ساخت را به WINS / UDEB برگردانید در غیر اینصورت با مشکل مواجه میشوید


این جلسه هم تموم شد از اول تا اینجا رو یک مورور بکنین تا جلسه بعد میخوایم یک موتور پردازشی برای بازیمون تو برنامه بزاریم

از اینجا دیگه باید دست به اچار بشیم:loveit:

CONS†AN†INE
11-08-2007, 14:25
تصمیم گرفتم برای چند وقتی تاپیک رو ببندم تا هر وقت علاقه مندان به برنامه نویسی زیاد شدن بعد کارو شروع میکنم :flower:


خیلی خسته شدم یکم استراحت لازمه:loveit:

™SIAMAK
11-08-2007, 16:51
خیلی خسته شدم یکم استراحت لازمه:loveit:
CONS†AN†INE جان بهتره يه مسافرت بري تا از اين حال و هوا بيرون بياي:wink2: :merci: :merci:

CONS†AN†INE
11-08-2007, 18:00
CONS†AN†INE جان بهتره يه مسافرت بري تا از اين حال و هوا بيرون بياي:wink2: :merci: :merci:

اتفاقا چند روز دیگه میخوام برم بابلسر یک حالی عوض کنم :coool:

ARASH_SHK
11-08-2007, 22:50
دوست عزیز... ممنون از این تاپیک جامع و کاملت ....خیلی عالی بود... بازم ادامه بده ما هواتو داریم ...

ضمنا" از اینکه مثل خودم با فیلم کنستانتین حال میکنی خیلی خوشحالم ...آخرشه ...

FARID
13-09-2007, 00:09
تاپیک دوباره راه اندازی میشه.

CONS†AN†INE
13-09-2007, 00:27
خوب دوباره برگشتم با بقیه اموزش :loveit:


امیدوارم دوستان منو همراهی کنن تا نا امید نشم:flower:

CONS†AN†INE
13-09-2007, 00:41
قبل از ادامه اموزش توصیه میکنم کلیه مراحا اموزش رو علاقه مندان با صرف وقت دوباره طی کنند تا در ادامه مطالب رو راحت تر درک کنند:loveit:


اموزش لود کردن تصاویر در برنامه

++C سیستم عامل سیمبین دارای پشتیبانی داخلی از فایل های .mbm است. این فایل ها مجموعه ای از فایل های تصویری فشرده شده RLE هستند.

مزیت های آنها عبارتند از:

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

بازی که از تصاویر زیادی به این سیستم استفاده می کند بسیار بزرگ خواهدشد. بنابراین بهتر است که از فایل های .png و یا .jpg استفاده کنیم.

متاسفانه روتین ها و متغییر های از پیش تعریف شده ای برای لود کردن این گونه تصاویر وجود ندارد و انجام دادن دستی آنها نیز نسبتا پیچیده است. همچنین باز کردن آنها از حالت فشرده شده مقداری زمان می برد، بنابراین آنها به طور غیر همزمان کار خواهند کرد.


در سیستم عامل سیمبین ویرایش 7.0 یک روش انتخابی دیگر نیز برای لود کردن تصاویر ممکن است ، ولی اگر می خواهید بازی شکا توسط گروه زیادی از مردم استفاده شود، مجبورید که از توابع قدیمی استفاده کنید، برنامه نویسی و شرح کامل پروسه لود کردن تصاویر خودش می توان به اندازه یک کتابچه باشد بنابر این یک کلاس کامل از قبل تهیه شده است

(PngLoader.cpp) ویک فایل دیگر هم توسط نوکیا تهیه شده است (bitmapmethods.cpp) که در بعضی از وظایف عمومی کمک می کند. بعضی توابع دیگر نیز به آن اضافه شده است که بسیار پر کاربرد هستند. شما مس توانید به راحتی دوفایل را به پروژهای شخصی خودتان اضافه کنید !

در پروژه Mopoid یک کلاس، مسئول لود کردن و ذخیره کردن تمام تصاویر است. اگر یک تصویر در جای دیگری مورد نیاز باشد می تواند آن تصویر را با فرستادن ID تصویر به تابع کلاس CSpritHandler دریافت کند.


کلاس های C و T

به نظر شما معنی C در اول نام کلاس چیست ؟

به طور مختصر به این معنی است که این کلاس همیشه به حالت گروه ایجاد می شود و اکثر مواقع آبجکت های شخصی خودش را دارد.

هنگامی که مخرب (Desstructor) کلاس c ما صدا زده شد، آن آبجکت ها (اشیا) نابود خواهند شد. دومین نوع مهم دیگر کلاس ها T هستند. این کلاس ها در حقیقت شبیه به یک نوع
داده (Data type) ساده هستند یک کلاس از این نوع نمی تواند مخربی داشته باشد. برای مثال بنیادی ترین نوع داده های سیمبین دارای یک پیشوند T هستند مانند Tint, TReal,…

ConstructL
فایل SpritHandler.cpp را به منظور دیدن کدهای کلاس مدیر تصویر (bitmap manager class) باز کنید. توجه خواهید داشت که سازنده (Constructor) خالی است و شما کدتان را در تابعی به نام ConstructL() می نویسیدکه توسط NewL() صدا زده می شود.

علت این کار در وضعیت حافظه های موبایل است. اگر شما یک برنامه برای PC بنویسید(در بیشتر موارد) نگران حافظه آزاد نیستید. در اینجا وضعیت به گونه دیگری است. ممکن است که حافظه موبایل تماما اشغال شود و ایجاد یک شی از یک کلاس انجام نشود.

به هر حال هنگامی که شما حافظه را در سازنده اختصاص می دهید، واین پروسه به طور کامل انجام نمی شود، حافظه اختصاص داده شده بی صاحب باقی می ماند واین بد است. بنابراین کد اجرا شده در یک سازنده C++ هرگز نباید ناتمام رها شود!

راه حل ساده است( یک سازنده دو مرحله ای) فقط تمام کدهای اختصاص دادن حافظه را به متد ConstructL() انتقال دهید.

حالا شما می توانید آبجکت یا شی را به طور عادی ایجاد کنید و سپس در خط بعدی این تابع را صدا بزنید. این کار به شما فرصت کنترل کردن عملیات رها شده را به طور صحیح می دهد.

به ویژه اگر شما نیاز دارید که بیش از یک شی از کلاستان ایجاد کنید، باید آن کدها( اختصاص دادن و صدا زدن ConstructL()) را به تعداد متعدد بنویسید. برای جلوگیری از این کار سازنده دوبخشی معمولا توسط یک NewL() استاتیک یا تابع NewL() مدیریت می شود.

به عنوان یک قاعده کلی هنگامی که شما می خواهید یک آبجکت را به یک متغیر نسبت دهید NewL() باید اجرا شودNewL() آبجکت را در پشته Cleanup می گذارد و برای متغییرهای اتوماتیک مفید است. در مورد این موضوع بیشتر بحث خواهیم کرد. :rules:

تا اینجا یک توضیح از اصول و قواعد گفته شد در جلسه بعد نگاهی به کد های مربوط به لود تصاویر مکنیم.:loveit:

CONS†AN†INE
14-09-2007, 00:08
این جلسه نحوه لود کردن تصاویر:

ابتدا باید نام فایل تصویری را که می خواهیم لود کنیم تعریف کنیم .این کار به صورت زیر انجام می شود:

http://www.filehive.com/files/0913/SuM18459.jpg

این خط یک آبجکت با نام KBmpPanel می سازید که رشته panel.png را به طور مستقیم و به صورت باینری در برنامه ذخیره می کند.

رشته ها در C++ سیستم عامل سیمبین متفاوت با C++ استاندارد کنترل و مدیریت می شوند.

باز هم علت این کار محدودیت حافظه موبایل است. در C++ سیستم عامل سیمبین رشته واصف) Descriptor) نامید می شود. عادت کردن به آنها واقعا سخت است. ولی از طرف دیگر کمتر از رشته های C++ استاندارد حافظه اشغال می کنند.

هنگامی که ما یک تصویر را لود کردیم نیاز داریم که آن را در جایی ذخیره کنیم.

برای دیدن آن شما باید یک نگاه به فایل سرآیند کلاس Sprit Handler بیندازید. به دلایل نامعلوم C++BuilderX آن فایل ها را درساختار پروژ نشان نمی دهد.

به جای آن شما باید سورس فایل را باز کنید، بخش ضمینه های آن را در پانل Structure در سمت چپ باز کنید و از آنجا به فایل ضمینه بروید

در اعلان کلاس(class declaration) شما اعلان های زیر را که مربوط به یک متغییر خصوصی (private) است خواهید دید.

http://www.filehive.com/files/0913/9mB18493.jpg


چرا متغیر به جای m_sprites یا sprites، iSprites نامیده شده است؟ این مورد نیز یک رهنمون دیگر کد نویسی C++ سیستم عامل سیمبین است.

تمام متغیر های عضو باید دارای یک پسوند i باشند. به این ترتیب تمام متغیرهای پارامتری نیز باید یک a در ابتدایشان باشند.

به فایل SpriteHandler.cpp برگردید. بیایید آرایه مان را با تصاویر پر کنیم. ما این کار را با صدا زدن یک متد استاتیک از کلاس CPngLoader انجام می دهید

توجه داشته باشید که ما به کلاس می گوییم که تصویر را به عنوان EColor4k لود کند.

به این معنی که تصویر4096 رنگ است که این مقدار برابر عمق رنگ دستگاه های سری 60 قبلی مانند Nokia N-Gage و Nokia 7650 است.

اکنون دستگاه های جدید EColor64k (یا بالاتر) را هم پشتیبانی می کنند. اگر چه برای گرافیک های یک بازی ساده مانند Mopoid رنگهای زیادی نیاز نداریم.

ESpritePanel یک ارائه متنی یک ID است که enumeration نامیده می شود و در MopoidSharedData.h تعریف شده است.

ما می خواهیم که پانل ما گوشه های گرد داشته باشد، پس ما یک ماسک نیاز خواهیم داشت. یک روش برای انجام این کار این است که یک فایل تصویر دومی داشته باشیم که حاوی تصویر ماسک سیاه و سفید است.

به هر حال همانطور که قبلا گفته شد لود کردن فایل های .png مدتی طول می کشد پس بهتر است که ماسک را خودمان ایجاد کنیم . از کد زیر استفاده کنید:


http://www.filehive.com/files/0913/SIM18554.jpg

این تابع یک تصویر ماسک بر پایه رنگ پیکسل بالا وسمت چپ تصویر منبع ایجاد می کند. اگر شما نمی خواهید که تمام پیکسل هایی که رنگ مشخص شده دارند شفاف شوند، می توانید از دومین و سومین پارامتر جهت مشخص کردن رنگ مورد نظرتان استفاده کنید.

حالا،تصویر توپ(مثال) را به همان روش به عنوان تصویر پانل لود کنید. نام فایل ball.png است، اسامی enumeration برای ID ها عبارتند از:

ESpriteBall و ESpriteBallM .

آجرها مقداری متفاوت هستندو آنها شکل مستطیلی دارند و به ماسک نیاز ندارند.

البته ما رنگ های متفاوتی رابه آنها نسبت می دهیم. به جای لود کردن یک به یک تصاویر بهتر است که تمام گرافیک ها را در یک فایل جمع کنیم و بعد از لود کردن آنها را جدا کنیم.

با این روش فایل های تصویری فضای کمتری اشغال می کنند و اگر چه برنامه حافظه موقت (Temporarily memory) بیشتری نیاز خواهد داشت ولی سرعتش به مقدار زیادی افزایش پیدا خواهد یافت .

در جلسه بعدی خطا هایی که در لود کردن تصاویر پیش میاد رو یاد میگیریم:loveit:

ABBAS_00
19-09-2007, 16:40
سلام
دوست گرامی خسته نباشی !
حقیقتش اینه که من این تاپیک رو تازه پیدا کردم و خیلی ازش خوشم اومده ولی یه مشکلی که هست اینه که من واقعن متوجه نشدم شما دقیقن از چه نرم افزار یا نرم افزار هایی استفاده می کنی . اگر میشه اسم کامل و دقیق این نرم افزار ها رو بگید که من با تهیه اونا تو مکانم مشکلی نداشته باشم .
بسیار متشکر خواهم شد .

CONS†AN†INE
19-09-2007, 17:02
سلام
دوست گرامی خسته نباشی !
حقیقتش اینه که من این تاپیک رو تازه پیدا کردم و خیلی ازش خوشم اومده ولی یه مشکلی که هست اینه که من واقعن متوجه نشدم شما دقیقن از چه نرم افزار یا نرم افزار هایی استفاده می کنی . اگر میشه اسم کامل و دقیق این نرم افزار ها رو بگید که من با تهیه اونا تو مکانم مشکلی نداشته باشم .
بسیار متشکر خواهم شد .

سلام عباس جان من تمام نرم افزارهایی که دارم باهاش کار میکنم و برای اموزش نیاز هست رو با ورژن دقیق در صفحه اول همراه با اموزش نصبشون گفتم

اون نرم افزارها رو تهیه کن و از طریق اموزش جلو برو در ضمن توصیه میکنم اصلا از اینترنت این نرم افزار ها رو نگیرید و از بازار از فروشگاه های معتبر خرید کنید تا از صحت برنامه ها مطمئن شوید و در هنگام کار با مشکلی برخورد نکنید

متشکرم:loveit:

CONS†AN†INE
03-10-2007, 08:42
این جلسه هم در ادامه جلسه قبل در رابطه با لود کردن تصاویر و خطا های پیش اومده و خود کدهای اصلی:loveit:

خوب شروع میکنیم

حذف تصاویر هنگامی که شما سعی می کنید که برنامه را اجرا کنید،

برنامه باید تصاویر را لود کند که شما آن را نخواهید دید .

ما کد مورد نیاز برای نمایش آنها را هنوز ننوشته ایم.

حالا سعی کنید که از برنامه خارج شوید .

شما یک اخطار میبینید!!

این خطا به شما از وجود یک رخنه در حافظه قسمتی از برنامه شما اطلاع می دهد. پیدا کردن عامل صدمه زننده واقعا کار سختی است به همین دلیل همیشه به یاد داشته باشید که به جای فقط بستن پنجره شبیه ساز از خود برنامه خارج شوید.


در اینجا ما حافظه اختصاص یافته به فایل های گرافیکی را هنگامی که آبجکت CSpriteHandler نابود شد آزاد نکردیم خوشبختانه یک راه حل ساده وجود دارد.

کلاس TFixedArray از iSprites این کار را به راحتی انجام می دهد. نوشتن کد زیر در مخرب کلاس تمام کار را نجام خواهد داد:
iSprites.DeleteAll();

خوب تا اینجا ما لود کردن تصویر رو یاد گرفتیم حالا میریم برای نمایش عکس:lol:

تنها لود کردن تصویر به ما کمک زیادی نمی کند( ما باید آنها را به صفحه نمایش نیز بیاوریم.)

در برنامه ما ، کلاس موتور گرافیکی بازی مواظب آماده سازی بافر پشتی تصویر است.

به این معنی که تمام گرافیک ها در یک تصویر خارج از اندازه صفحه کشیده می شوند.

هنگامی که این پروسه تمام شد تصویر کلی به صفحه نمایش کپی می شود.

این روش از خاموش و روشن شدن تصویر جلوگیری می کند، که در صورت عدم استفاده از روش مذکور ممکن بود اتفاق بیفتد.

ابتدا به متد ConstructL() از کلاس CGameEngine بروید. کدی که چند محاسبات اندازه ای روی فایل های گرافیکی که اخیرا لود کردیم انجام می دهد را از حالت کامنت خارج کنید.

اگر مایل هستید می توانید نگاهی به کد بیندازید ولی این کد الان برای ما مهم نیست.
خوب frame در متد DrawFrame() کشیده می شود، که در پایین سورس کد در همان کلاس است. توجه داشته باشید که تابع از نوع const تعریف شده است به این معنی که تغییر اطلاعات عضو کلاس بازی امکان پذیر نیست.

کنترل و مدیریت شفافیت

بیایید نگاهی به خط زیر داشته باشیم:

http://www.filehive.com/files/1003/eme18604.jpg


هنگام کشیدن یک تصویر سیستم عامل سیمبین یک قلم و یک قلم مو به خاطر زمینه گرافیکی ایجاد می کند، که عملیات کشیدن ونقاشی کردن را مدیریت می کنند .

یک مثال:

هنگامی که شما یک مستطیل می کشید خطوط مستطیل توسط تنظیماتی که شما به قلم اعمال کرده اید کشیده می شوند و توسط قلم مو مستطیل رنگ می شود.

ما از آن توابع کشیدن استفاده نمی کنیم ولی باید کاملا واظب این رفتار باشیم! اگر یک قلم موی سخت انتخاب کنیم و بخواهیم یک تصویر دارای قسمت های شفاف بکشیم آن قسمت ها با رنگ کنونی قلم مو و مشخصات دیگر آن پر خواهند شد!

به همین خاطر است که ما قلم مو را قلم موی تهی تنظیم کردیم که به پس زمینه یک تصویر اجازه می دهد که در قسمت های شفاف آن دیده شود.

کشیدن یک تصویر

ابتدا توپ را خواهیم کشید. اولین خط از قبل وجود دارد این خط موقعیت توپ را محاسبه می کند و آن را در یک متغیر TPoint قرار می دهد. این نوع متغیر به طور اتوماتیک حاوی یک X و یک Y مختصاتی است و بسیار هم پر کاربرد است.


این خط تابع BitBltMasked() محتوای گرافیک بافر پشتی را صدا می زند که در حقیقت یک تصویر منبع ماسک زده را به تصویر مقصد کپی می کند اولین پارامتر موقعیت را مشخص می کند.

دومی تصویر مبدا است ، سومی اندازه تصویری است که ما می خواهیم کپی کنیم، چهارمی ماسکی است که می خواهیم استفاده کنیم و پنجمی مشخص می کند که ماسک معکوس شود یا خیر.

برای جستجوی پارامتر های توابع تهیه شده توسط API های سیستم عامل سیمبین می توانید نگاهی به HELP سیمبین داشته باشید.
به SDK Help در مسیر
startMenu -> Symbian 6.1 SDKs -> Series60 -> Documentation بروید و در آنها جستجو کنید.

حالا مقداری به پایین بیایید و همان کار را که برای پانل انجام دهید.

برای موقعیت آن از مقدار ذخیره شده در iPanel.iPos استفاده کنید.

ID های enumeration برای Sprite ها عبارتند از ESpritePanel و ESpritePanelM اندازه، iPanel.iSize است.

همانطور که قبلا دانستیم ، آجر ها به شفافیت نیازی ندارند. در ضمن شما باید مواظب باشید که منطقه های شفاف بزرگی نکشید زیرا که سرعت برنامه را کمتر می کند.

تابع کشیدن یک تصویر بدون ماسک BitBtl() به ابع قبلی شبیه است و کاربرد آن مقدار راحت تر است.

شما فقط دو پارامتر دارید،موقعیت و تصویر منبع. کد زیر را در قسمت علامتگذاری شده در حلقه for که برای کشیدن تمام آجر های مرئی تکرار میشود قرار دهید.


البته هنوز هیچ گونه واکنش و فعالیتی ندارد. برای فعال کردن این بخش کلید های زده شده را کنترل و مدیریت کنید.

کار با تصاویر در اینجا به پایان میرسه توی جلسه بعد روی تنظیم کلید های زده شده بحث میشه

تا جلسه بعد:flower:

pejmaaan
06-10-2007, 09:20
مرسي آقا ... بعضي وقتا دكمه تشكر فايده نداره ...

mahmood.ariaee
07-10-2007, 14:32
آقا یه برنامه مثل فارسی نویسی کریستال عربیک منتها برای زبان فارسی بنویسید تا بتونیم با اون راحت توی Uiq 3 اس ام اس بنویسیم. ذست شما درد نکند.

CONS†AN†INE
19-10-2007, 20:40
مرسي آقا ... بعضي وقتا دكمه تشكر فايده نداره ...

دوست عزیز از لطف شما بسیار متشکرم ولی بهتره همیشه از دکمه تشکر استفاده کنید:loveit:

CONS†AN†INE
19-10-2007, 20:47
آقا یه برنامه مثل فارسی نویسی کریستال عربیک منتها برای زبان فارسی بنویسید تا بتونیم با اون راحت توی Uiq 3 اس ام اس بنویسیم. ذست شما درد نکند.

دوست عزیز نوشتن یک برنامه که در ساختار سیستم برنامه (فیرمور) گوشی بشه خیلی مشکله در ابتدا باید یکسری کد رو برای نوشتن برنامه خریداری کرد که هزینه هنگفتی داره!!!:sad:

شما برای بهره بردن از زبان فارسی توی گوشیتون به این تاپیک سر بزنید مشکلتون حل میشه:loveit:


اینجا (http://www.mobilestan.net/showthread.php?t=41809)

CONS†AN†INE
19-10-2007, 21:39
دوستان و علاقه مندان به برنامه نویسی سیمبیان که تا الان منو همراهی میکردن و دلگرم به ادامه کار از همه تشکر میکنم :merci:

به علت شروع کلاسها و مشغله کاری این تاپیک ماهی یکبار اپ میشه باید از همتون عذر خواهی کنم ولی واقعا نمیتونم یعنی وقت نمیکنم :wink:

دیگه باید به خوبیه خودتون ببخشید :loveit:

saeid_eslamic
03-11-2007, 22:19
برنامه را از كجا بگيرم

Hadisaraie
14-11-2007, 00:55
سلام من امروز این تاپیکو دیدم خیلی ممنون از زحمتات من برای شروع باید چکار کنم برنامه های لازم چی هست؟

CONS†AN†INE
14-12-2007, 14:36
برنامه را از كجا بگيرم



سلام من امروز این تاپیکو دیدم خیلی ممنون از زحمتات من برای شروع باید چکار کنم برنامه های لازم چی هست؟


دوستان عزیز برای شروع تمامی برنامه ها و بقیه چیزها رو توی پست اول توضیح دادم

حتما مطالعه کنید:wub:

CONS†AN†INE
23-01-2008, 12:03
با سلام به دوستان و گلهای موبایلستان:trolll:

تصمیم گرفتم که هر قسمت از اموزش رو بصورت فایل PDF در بیارم تا دوستانی که وقت نمیکنن بعدا توی خونه بخونن :119:


من خودم نمیدونم چجوری فایل PDF درست کنم دوستانی که این کار رو کردن منو راهنمایی کنن یا نرم افزار ی رو بگن یا با همکاری هم این ها رو بصورت فصل فصل درست کنیم:present:



در ضمن بعد از امتحانات با سری جدید اموزش سیمبیان بصورت ساده تر از این در خدمتون خواهم بود البته اگه عمری بود:wub:


متشکرم از تمام دوستان:flower:

Mohammad62
23-01-2008, 14:19
حمید رضا جان میتونی توی ورد این کار رو بکنی و بعد کانورتر مخصوص pdf رو نصب کنی تا تبدیل کنه
یا این که آکروبات حرفه ای رو پیدا کن فکر کنم حجمش 600 یا 700 مگه که فایل میسازه

aceboy
28-01-2008, 00:27
سلام
ممنون از اموزش خیلی خوبت
اگه هر وقت اموزش هاتو تبدیل به PDF کردی لطفا به ایمیل منم بفرست
aceboy.ab@gmail.com
ضمنن کانورتوری که می خوای، توی سی دی های کینگ پیدا میشه...
مرسی

avizhegan
01-02-2008, 07:56
از كار آموزشي تون متشكرم بازم ادامه بديد

mehlove
03-02-2008, 04:12
سلام
مرسی دوست عزیز. کار جالب و مفیدی رو شروع کردی. ادامه بده لطفآ. برات آرزوی موفقیت دارم.

arashams
03-02-2008, 06:38
با سلام به دوستان و گلهای موبایلستان:trolll:

تصمیم گرفتم که هر قسمت از اموزش رو بصورت فایل PDF در بیارم تا دوستانی که وقت نمیکنن بعدا توی خونه بخونن :119:


من خودم نمیدونم چجوری فایل PDF درست کنم دوستانی که این کار رو کردن منو راهنمایی کنن یا نرم افزار ی رو بگن یا با همکاری هم این ها رو بصورت فصل فصل درست کنیم:present:



در ضمن بعد از امتحانات با سری جدید اموزش سیمبیان بصورت ساده تر از این در خدمتون خواهم بود البته اگه عمری بود:wub:


متشکرم از تمام دوستان:flower:

دوستان چرا اینهمه 700الی800مگ
دوست عزیز یه Pdffactory به حجم 4مگ دانلود کن کارت درست میشه اگه نتونستی پیدا کنی بگو همینجا تو سایت آپ کنم××××
در ضمن من خودم درباره این سیستم عامل یه توضیحات کاربردی دادم که بدوستان پیشنهاد می کنم اونم بخونن

be_alizadeh
01-03-2008, 15:18
من كابر جديد سايت هستم
اولين مطلبي كه نظر من رو جلب كرد همين موضوع بود.
قصد دارم مواردي رو كه بهش اشاره كرديد اجرا كنم
از تلاش شما بسيار تشكر مي كنم.
اين براي اينكه مطمئن باشيد پيگير مطالب شما هستيم
پس با دلگرمي بيشتر ادامه بدهيد.

CONS†AN†INE
01-03-2008, 15:47
من كابر جديد سايت هستم
اولين مطلبي كه نظر من رو جلب كرد همين موضوع بود.
قصد دارم مواردي رو كه بهش اشاره كرديد اجرا كنم
از تلاش شما بسيار تشكر مي كنم.
اين براي اينكه مطمئن باشيد پيگير مطالب شما هستيم
پس با دلگرمي بيشتر ادامه بدهيد.

شما لطف دارین هر کجا مشکلی داشتید مطرح کنید:trolll:

در ضمن بعلت کنکور یکم کم کار شدم:present:

شرمنده ام:wub:

mahdi84
30-03-2008, 10:04
آقا دست شما درد نکند دمد گرم خیلی باحالی من عضو جدیدم و خیلی از آموزش شما سپاسگزارم

mehdi-seda
08-05-2008, 20:06
من امروز این تاپیک رو دیدم وخیلی خوشحال شدم که یک نفر همه ملزومات کار رو به زبان ساده وکاربردی معرفی کرده
امیدوارم برای جاوا هم یه همچین تاپیکی پیدا بشه ممنون
راستی چند تا سورس برنامه های نسبتا معروف رو هم اگه ... آوردی بزار برا آشنایی بچه ها وهم دیدن تکنیک های برنامه نویسای حرفه ای مثل خودت

pershianix
23-08-2008, 20:29
اینم تشکر من به خاطر استمرار در این آموزش. بی نهایت از شما ممنونم جناب کنستانتین. البته ببخشید که اینقدر دیر دارم تشکر میکنم. آخه تازه تاپیکو دیدم!

oqba
21-09-2008, 05:11
باتشکر از شما که اینقدر برای یادگیری ما زحمت می کشین!واقعا ممنون

morteza_maz
26-06-2009, 16:07
من برنامه زیر را گرفتم S60_3rd_Ed_SDK_FP2_API_Plug-In_Pack_v1_2 از سایت نوکیا
حالا چطور به ویژوال استدیو اضافش کنم چون داخلش اصلا ستاپ نداره و همش فایل زیپه

faraznateghi
02-09-2009, 15:24
شما اگه اب ریدر پروفشنال رو نصب کنید کنار صفحه ی wordیه آیکون اضافه میشه که متنه درست شده تو word رو pdf کنه
من تازه این تاپیکو دیدم امیدوارم به updateادامه بدید

J@M@L
01-06-2011, 21:09
سلام کنستانتین دمت گرم من میخوام یادبگیرم این تاپیکو تازه دیدم اگه لطف کنی و آموزش هاتو pdf کنی خیلی بهتره اگه زحمتت نیست بفرست به ایمیلم black_heart_68@yahoo.com فقط هر وقت فرستادی یه پیغام برام بزار مرسی

sepehrmrx
26-02-2012, 11:06
برای برنامه نویسی سیمبیان باید یک زبان برنامه نویسی مثل ++Visual C++ Or C
رو یاد داشته باشین در اینجا برای سهولت در یادگیری از ++VC استفاده میکنیم.


برای کار شما باید یک SDK داشته باشید برا ی هر موبایل و سیستم عاملش فرق میکنه

بعد از اون شما به Active Perl بهتره این نسخه باشه 5.8.7Build 813

نصب SDK

اگر مراحل نصب را درست طی نکنید SDK شما اجرا نخواهد شد!

در اینجا SDK ما Series60 است.

در این مسیر نصب شود C:\Symbian\7.0s\Series60

بعد از نصب برای اجرای امولیتور SDK به این مسیر بروید:

Start -> Programs -> Symbian 6.1 SDKs -> Series 60 -> Emulator Debug or Release

نصب Active Perl

هنگام نصب مسیر اکتیو پرل را به C:\perl تغییر دهید

برای پی بردن به درستی انجام کار یک DOS PROMPT
باز کنید و دستور زیر رو بنویسد که این دستور help برنامه رو نشان میدهد Perl –h اگر اجرا نشد به مسیر زیر برید

Start -> Settings -> Control Panel -> System -> Advanced -> Environment Variable

و در تب بالا گزینه path رو انتخاب و به صورت زیر Edit کنید
( البته به اخر اون اضافه کنید و اگر وجود نداشت اون رو بسازید - ویندوز من در درایو d: نصب شده شما درایو d: رو به درایو خودتون تغییر بدید)

C:\Symbian\7.0s\Series60\epoc32\tools;C:\Symbian\7 .0s\Series60\epoc32\gcc\bin;D:\Program Files\Common Files\SYMBIAN\Tools;C:\Perl\bin\;%SystemRoot%\syst em32;%SystemRoot%;%SystemRoot% \System32\Wbem;%EPOCPATH%;

و دوباره دستور بالا رو اجرا کنید و نتیجه رو چک کنید و اگر دوباره کار نکرد برنامه Active perl رو
پاک و دوباره نصب و کارهای بالا رو انجام بدید تا برنامه کاملا نصب بشود.

شما برنامه های مورد نیاز برای شروع کار را نصب کرده اید فردا اولین جلسه رو شروع میکنیم تا
فردا خودتون رو اماده کنید :loveit:

بهتر نبود لینک مربوط به SDK و Active Perl رو میذاشتید؟