Contacts
صفحه اصلی پورتال | صفحه اصلی تالار | ثبت نام | اعضاء | گروه ها | جستجو | پرسش و پاسخ | فروشگاه الکترونیکی | خرید پستی بازی های کامپیوتری





صفحه اول انجمنها -> برنامه نویسی با زبان های C++ و Delphi و VB -> سوالهايي در مورد ++C
 

ارسال يك موضوع جديد   پاسخ به يك موضوع ديدن موضوع قبلي :: ديدن موضوع بعدي
برو به صفحه قبلي  1, 2, 3, ... 11, 12, 13  بعدي

نويسنده
پيغام
iran_adventure
مدیر انجمن
مدیر انجمن


تاريخ عضويت: شنبه 4 آذر 1385
تعداد ارسالها: 2069
محل سكونت: تهران


2 شنبه 14 خرداد 1386 - 15:09
پاسخ بصورت نقل قول
يه مشكل عجيب غريب :
وقتي از Turbo C++ v3.0 DOS استفاده مي كنم مي گه < static_cast< type رو نمي شناسه . جالبه كه وقتي static_cast رو بدون نوع متغير مي نويسم مي شناستش ولي وقتي نوع رو مي نويسم مي گه نمي شناسه !!! دفعه اول هم نيست كه استفاده مي كنم چند روز پيش درست كار مي كرد . دوباره نصبش كردم درست نشد .
ولي با ++VC هيچ ايرادي نمي گيره و برنامه رو درست كامپايل مي كنه .
چه كار كنم Turbo C++ v3.0 DOS رو بزارم كنار ؟

_________________
Make something happen
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
eta
مدیر سایت
مدیر سایت


تاريخ عضويت: 2 شنبه 27 تير 1384
تعداد ارسالها: 2153
محل سكونت: شاهين شهر


2 شنبه 14 خرداد 1386 - 17:38
پاسخ بصورت نقل قول
iran_adventure نوشته:
نه ! خيلي عجيب غريبه ! 017 مي زني مي شه 15 - 020 مي زني مي شه 16 !! - 018 مي زني مي شه 1 !!!!

اصلا بيا خودت امتحان كن :

http://gamer2006.persiangig.com/other/1.EXE


من می دونستم اگه اولش 0x بنویسی هگزا دسیمال میشه اما اینو نمی دونستم.

اگه اول عدد یه 0 بذاری اون عدد اکتال (مبنای 8 ) محسوب میشه برای 018 هم ارقام بعد از 8 رو چون رقم اکتال نیست نادیده میگیره.

_________________
تالار اصول ->صفحه ها، مقالات و تاپیکهای مفید

ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل
 

نويسنده
پيغام
eta
مدیر سایت
مدیر سایت


تاريخ عضويت: 2 شنبه 27 تير 1384
تعداد ارسالها: 2153
محل سكونت: شاهين شهر


2 شنبه 14 خرداد 1386 - 17:40
پاسخ بصورت نقل قول
iran_adventure نوشته:
يه مشكل عجيب غريب :
وقتي از Turbo C++ v3.0 DOS استفاده مي كنم مي گه < static_cast< type رو نمي شناسه . جالبه كه وقتي static_cast رو بدون نوع متغير مي نويسم مي شناستش ولي وقتي نوع رو مي نويسم مي گه نمي شناسه !!! دفعه اول هم نيست كه استفاده مي كنم چند روز پيش درست كار مي كرد . دوباره نصبش كردم درست نشد .
ولي با ++VC هيچ ايرادي نمي گيره و برنامه رو درست كامپايل مي كنه .
چه كار كنم Turbo C++ v3.0 DOS رو بزارم كنار ؟


من تا حالا با turbo c کار نکردم و نمی دونم. اما چرا رفتی سراغش؟؟؟
من می گم بی خیالش شو.

_________________
تالار اصول ->صفحه ها، مقالات و تاپیکهای مفید

ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل
 

نويسنده
پيغام
iran_adventure
مدیر انجمن
مدیر انجمن


تاريخ عضويت: شنبه 4 آذر 1385
تعداد ارسالها: 2069
محل سكونت: تهران


2 شنبه 14 خرداد 1386 - 22:03
پاسخ بصورت نقل قول
نقل قول:

من می دونستم اگه اولش 0x بنویسی هگزا دسیمال میشه اما اینو نمی دونستم.

اگه اول عدد یه 0 بذاری اون عدد اکتال (مبنای 8 ) محسوب میشه برای 018 هم ارقام بعد از 8 رو چون رقم اکتال نیست نادیده میگیره.


OK

نقل قول:

من تا حالا با turbo c کار نکردم و نمی دونم. اما چرا رفتی سراغش؟؟؟
من می گم بی خیالش شو.


بي خيال شدم ! الكي هم اخطار مي ده كه از متغيرهات استفاده نكردي . ++VC هم خيلي ايرادهاي جالبي رو مي گيره و كلا كار رو راحت تر مي كنه . نتيجه اين كه رفتم سراغ ++VC ...

ولي چرا كدها رنگي نمي شه . براي ايجاد يه پروژه ساده در حد حل تمرين بايد از كجا صفحه جديد ايجاد كنم . آخه كلي گزينه داره ...

_________________
Make something happen
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
iran_adventure
مدیر انجمن
مدیر انجمن


تاريخ عضويت: شنبه 4 آذر 1385
تعداد ارسالها: 2069
محل سكونت: تهران


3 شنبه 15 خرداد 1386 - 13:53
پاسخ بصورت نقل قول
كد:
#include <iostream.h>
#include <math.h>

int main()
{
   int n,
       counter,
      o;
   
   for ( int counter2 = 1 ; counter2 <= 1024 ; counter2++ ) {
      n = counter2;
     counter = 0;
     o = 0;
      for ( ; n > 0 ; counter++ ) {
       o += pow ( 10 , counter ) * ( n % 8 );
        n /= 8;
      }
     cout << o << endl;
     cout << counter << endl;
   }

   return 0;
}


من اين رو كامپايل مي كنم اين ارور رو مي ده

كد:
warning C4244: '+=' : conversion from 'double' to 'int', possible loss of data


من هيچ متغير 'double' ندارم چه جوري مي خواد به 'int' تبديل بشه ؟!

_________________
Make something happen
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
eta
مدیر سایت
مدیر سایت


تاريخ عضويت: 2 شنبه 27 تير 1384
تعداد ارسالها: 2153
محل سكونت: شاهين شهر


3 شنبه 15 خرداد 1386 - 18:24
پاسخ بصورت نقل قول
حاصل (pow ( 10 , counter ) * ( n % 8 یه مقدار double هستش(چون مقدار بازگشتی pow یه مقدار double ه) و تو می خوای توی o که یه int هست جاش کنی.(double هشت بیتیه و int چهار بیتی)
البته این یه warning ه ارور نیست Smile

_________________
تالار اصول ->صفحه ها، مقالات و تاپیکهای مفید

ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل
 

نويسنده
پيغام
iran_adventure
مدیر انجمن
مدیر انجمن


تاريخ عضويت: شنبه 4 آذر 1385
تعداد ارسالها: 2069
محل سكونت: تهران


3 شنبه 15 خرداد 1386 - 19:48
پاسخ بصورت نقل قول
احسان جان ممنون . همين كه آدم بدونه تا جايي از كتاب كه مطالعه كرده هيچ اشكالي نداره ( البته از نظر خودم ! ) اعتماد به نفس خاصي پيدا مي كنه ! ...

نقل قول:

البته این یه warning ه ارور نیست


آره راست مي گي اشتباه تايپي بود .

_________________
Make something happen
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
iran_adventure
مدیر انجمن
مدیر انجمن


تاريخ عضويت: شنبه 4 آذر 1385
تعداد ارسالها: 2069
محل سكونت: تهران


3 شنبه 15 آبان 1386 - 21:20
پاسخ بصورت نقل قول
چه طور برای آبجکتهایی که از یک کلاس ساخته شده اند توابع ساخته شده از فرامین مختلف بسازم . یعنی یه تابع به صورت پیش فرض باشه ( که کاری هم انجام نده ... ) و هر وقت خواستم دستورات مورد نظرم رو براش بنویسم ولی روی بقیه آبجکتهای از اون کلاس تاثیر نزاره ...
اگه گنگ بزارید با مثال بگم . مثلا برای ایونت onMouseDown من می خواهم برای هر آبجکت مورد نظرم دستورات جداگانه بنویسم درست مثل TGB و بقیه نرم افزارها که هر جا خواستیم دستورات خودمون رو در onMouseDown می نویسیم ...

_________________
Make something happen
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ارسال ايميل نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
lord_akinak
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: شنبه 15 ارديبهشت 1386
تعداد ارسالها: 349
محل سكونت: Hell


3 شنبه 15 آبان 1386 - 22:47
پاسخ بصورت نقل قول
نقل قول:

مثلا برای ایونت onMouseDown من می خواهم برای هر آبجکت مورد نظرم دستورات جداگانه بنویسم درست مثل TGB و بقیه نرم افزارها که هر جا خواستیم دستورات خودمون رو در onMouseDown می نویسیم ...


اين طور نيست كه وقتي يك event می رسه ، برنامه بره و onMouseDown آبجکت شما رو اجرا کنه ، در حقیقت همه این برنامه های یک حلقه اصلی برای گرفتن event ها دارن ، وقتی شما یک آبجکت می سازی ، برنامه (TGB) ، یک ارجا به onMouseEvent اون شی برای خودش نگه می داره و هر وقت event موس براش رسید ، به ترتیب تمام onMouseDown تمام اشیا رو صدا می زنه ...
اگر برای sdl هست... sdl در واقع همون کار TGB رو می کنه ... یعنی کاملا همونه ...
یک کلاس abstract تاریف کن که onMouseDown , onMouseMove , onKeyDown و ... رو به صورت virtual داشته باشه ، و تمام اشیایی که قرار event رو پشتیبانی کنن مشتق این کلاس قرار بده... این طوری هر شیئی onMouseDown خودش رو داره ... بعد یک ارجا از اون کلاس abstract به EVENT HANDLER اصلی ( همون حلقه اصلی event در sdl ) بده تا وقتی یک پیغام رسید... onMouseDown تمام اشیا رو صدا کنه ...
در هر صورت به یه Vector برای نگه داشتن ، کلاس abstract نیاز داری .....

این یه بچه Vector

(همرو کپی کن توی یک فایل .h و اون رو اینکلود کن...! )
كد:

#ifndef VECTOR_X2D
#define VECTOR_X2D

namespace X2D {
   namespace core {
      template < typename T >
      class xVector {
      public:
         xVector<T>& operator << ( T elm );
         T* operator [] ( int index );

         xVector( int size, int increase );
         xVector();
         ~xVector();
         
         void put( T elm );
         void shoot( T elm );
         void shoot( int index );
         void deleteMember( int index );
         void setIncreasement( int inc );
         // remove all childs frome vector, without calling destructors.
         void clear();
         void deleteAll();

         T getMemberAt( int index );
         T *getMemberPointerAt( int index );
         int getMemeberIndex( T elm );
         bool isEmpty();
         int getSize();

      protected:
         T *elements;
         int size , ecount , incm;
      };
   }
}


template < typename T >
T* X2D::core::xVector< T >::operator [] ( int index ) {
   return this->getMemberPointerAt( index );
}

template < typename T >
X2D::core::xVector< T >& X2D::core::xVector< T >::operator << ( T elm ) {
   this->push( elm );
   return *this;
}

template < typename T >
X2D::core::xVector< T >::xVector( int size, int inc ) {
   this->size = size;
   this->incm = inc;
   this->ecount = 0;
   elements = new T[10];
}

template < typename T >
X2D::core::xVector< T >::xVector() {
   this->size = 10;
   this->incm = 10;
   this->ecount = 0;
   elements = new T[10];
}

template < typename T >
X2D::core::xVector< T >::~xVector() {
   this->deleteAll();
}

template < typename T >
void X2D::core::xVector< T >::put(T elm) {
   if (ecount < size)
      elements[ecount++] = elm;
   else {
      size += incm;
      // copy all elements;
      T *copy = new T[size];
      for (int i = 0; i < (ecount + 1); i++) {
         copy[i] = elements[i];
      }
      delete [] elements;
      elements = new T[size];
      for (int i = 0; i < (ecount + 1); i++) {
         elements[i] = copy[i];
      }
      elements[ ecount++ ] = elm;
      delete [] copy;
      copy = 0;
   }
}

template < typename T >
void X2D::core::xVector< T >::shoot(int index) {
   int x = 0;
   for (int i = index; i < ecount; i++) {
      elements[i] = elements[i + 1];
   }
   elements[--ecount] = 0;
}

template < typename T >
void X2D::core::xVector< T >::shoot(T elm) {
   this->shoot( this->getMemeberIndex( elm ) );
}

template < typename T >
int X2D::core::xVector< T >::getMemeberIndex(T elm) {
   for (int i = 0; i < ecount; i++) {
      if ( elm == elements[i] )
         return i;
   }
   return -1;
}

template < typename T >
T X2D::core::xVector< T >::getMemberAt( int index ) {
   return elements[index];
}

template < typename T >
T *X2D::core::xVector< T >::getMemberPointerAt(int index) {
   return &elements[index];
}

template < typename T >
void X2D::core::xVector< T >::clear() {
   delete [] elements;
   elements = 0;
   ecount = 0;
}

template < typename T >
void X2D::core::xVector< T >::deleteMember(int index) {
   delete elements[index];
   shoot(index);
}

template < typename T >
void X2D::core::xVector< T >::deleteAll() {
   for (int i = 0; i < ecount; i++) {
      deleteMember(i);
   }
}

template < typename T >
bool X2D::core::xVector< T >::isEmpty() {
   if (ecount == 0)
      return true;
   return false;
}
template < typename T >
int X2D::core::xVector< T >::getSize() {
   return ecount;
}
template < typename T >
void X2D::core::xVector< T >::setIncreasement(int inc) {
   this->incm = inc;
}
#endif

_________________
And hell was so cold
All the vases are so broken
And the roses tear our hands all open
Mother mary miscarry
But we pray just like insects
The world is so ugly now
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ديدن وب سايت كاربر نام كاربري در پيغامگير Yahoo
 

نويسنده
پيغام
lord_akinak
متخصص ساخت بازی
متخصص ساخت بازی


تاريخ عضويت: شنبه 15 ارديبهشت 1386
تعداد ارسالها: 349
محل سكونت: Hell


3 شنبه 15 آبان 1386 - 23:01
پاسخ بصورت نقل قول
يك مثال از براي همين كلاس VECTOR ::

كد:

#include "xVector.h"

// abstract Event Object !
class EventObject {
public:
   virtual void   onMouseDown( int keyDownID ) = 0;
   virtual void   onKeyboardUp( int keyUpID ) = 0;
   // .... all events need ..!
};

// an abject that can handle events!

class Sprite : public EventObject {
public:
   virtual void   onMouseDown( int keyDownID ) {
      //   doo somthing !
   }
   virtual void   onKeyboardUp( int keyUpID ){
      //  doo somthing !
   }
};

int main() {
   // Just a test !
   X2D::core::xVector< EventObject* >*      eventObjects = new X2D::core::xVector< EventObject* >();
   // add to vector ...
   eventObjects->put( new Sprite() );

   // in your event Loop ..... << ---
   
   for (int i = 0; i < eventObjects->getSize(); i++) {
      eventObjects->getMemberAt(i)->onMouseDown( 0 ); // call all ONMOUSEDOWN's ...
   }
      
   //   ------------------------------

   // remove without calling base class destructor !
   eventObjects->shoot(0);
   // delete Object, class destructor !
   eventObjects->getMemberAt(0);
   
   delete EventObject;

}


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

_________________
And hell was so cold
All the vases are so broken
And the roses tear our hands all open
Mother mary miscarry
But we pray just like insects
The world is so ugly now
ارسال  بازگشت به بالا
ديدن مشخصات كاربر ارسال پيغام خصوصي ديدن وب سايت كاربر نام كاربري در پيغامگير Yahoo
 

نمايش نامه هاي ارسال شده قبلي:   
ارسال يك موضوع جديد   پاسخ به يك موضوع    صفحه 2 از 13 تمام ساعات و تاريخها بر حسب 3.5+ ساعت گرينويچ مي باشد
برو به صفحه قبلي  1, 2, 3, ... 11, 12, 13  بعدي


 
پرش به:  


شما نمي توانيد در اين انجمن نامه ارسال كنيد.
شما نمي توانيد به موضوعات اين انجمن پاسخ دهيد
شما نمي توانيد نامه هاي ارسالي خود را در اين انجمن ويرايش كنيد
شما نمي توانيد نامه هاي ارسالي خود را در اين انجمن حذف كنيد
شما نمي توانيد در نظر سنجي هاي اين انجمن شركت كنيد


unity3d

بازگردانی به فارسی : علی کسایی @ توسعه مجازی کادوس 2004-2011
Powered by phpBB © 2001, 2011 phpBB Group
| Home | عضويت | ليست اعضا | گروه هاي كاربران | جستجو | راهنماي اين انجمن | Log In |