طراحی ماشین حساب مهندسی j2me

kolbeye_shab

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

کربلایی

مدیر بازنشسته
سلام
کار پیاده سازی تقریبا از دو بخش تشکیل میشه
1- الگوریتم ها و متدهای محاسباتی
2- طراحی ظاهر نرم افزار (کلاس کانواس اگر قرار بر استفاده هم باشه در این مورد استفاده میشه)

برای طراحی بسیاری از موارد بخش اول- اسمش رو میزاریم بخش محاسبات- (مانند سینوس، کسینوس، تانژانت و ...) میتونید از متدهای موجود در کلاس Math استفاده کنید.
برای مواردی که در کلاس مذکور نیست هم چاره دیگری می اندیشیم.
 

kolbeye_shab

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

کربلایی

مدیر بازنشسته
محاسبات رو تا حدود زیادی از همین کلاس math استفاده خواهم کرد، البته فعلا دارم رو یه ماشین حساب ساده کار می کنم و این قسمت الگوریتم نویسی خاصی نداره البته اگه بتونم این نرم افزار رو طراحی می کنم که قسمت قایلیت رسم نمودار دوبعدی رو داشته باشه خیلی خوب می شه
الان مشکل اولم اینه که کلید ها رو نمی شناسم و متاسفانه فعلا نتونستم javadoc رو هم نصب کنم، سوالم اینه که برای فراخوانی دوتا دکمه اصلی بالا باید حتما از کامند و کامند لیسنر استفاده کنم؟؟

یعنی الان داریدروی واسط کاربری کار میکنید؟
بنظر من بهتره قبل از این کار، همه کلاس ها و اشیائی(واسط کاربری هم جزئی از اینها میشه) که خواهید داشت و رابطه اونها باهم رو روی کاغذ بیارید.
در ادامه شروع به پیاده سازی کنید.

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

برای فراخوانی دو تا دکمه اصلی بهتره از کامند و لیسنر استفاده کنید.
اما برای بقیه دکمه ها(شماره های موجود بر روی گوشی) میتونید از متد keyPressed استفاده کنید
چیزی شبیه این:
کد:
protected void keyPressed(int keyCode){
            int gameAction = getGameAction(keyCode);
            int A = -2,B = -2,C = -2,D = -2;
            
            if ( (keyCode == Canvas.KEY_NUM2) || (gameAction == Canvas.UP) ){
                // کارهای مورد نظر
            }
            
            if ((keyCode == Canvas.KEY_NUM8) || (gameAction == Canvas.DOWN)){
                
            }
            
            if ((keyCode == Canvas.KEY_NUM4) || (gameAction == Canvas.LEFT)){
                
            }
            
            if ( (keyCode == Canvas.KEY_NUM6) || (gameAction == Canvas.RIGHT)){
                
            }
            
            if ((keyCode == Canvas.KEY_NUM5) || (gameAction == Canvas.FIRE)){
                
            }
            
            if ( (getGameAction(A) == NULL) && (keyCode == A) ) {
                
            }
            
            else if ( (gameAction == Canvas.GAME_A)  && (getGameAction(A) != NULL)){//LEFT_UP
                
            }
                
            if ( (getGameAction(A) == NULL) && (keyCode == B) ) {
                
            }
            
            else if ((gameAction == Canvas.GAME_B)  && (getGameAction(A) != NULL)){//RGHT_UP
                
            }
            
            if ( (keyCode == C) && (getGameAction(A) == NULL) ) {
                
            }   
                
            else if ((gameAction == Canvas.GAME_C) && (getGameAction(A) != NULL)){//LEFT_DOWN
                
        }
           
        if ( (keyCode == D) && (getGameAction(A) == NULL) ) {
            
        }
             
        else if ( (gameAction == Canvas.GAME_D) && (getGameAction(A) != NULL)){//RIGHT_DOWN
            
        }
        
    }

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

kolbeye_shab

عضو جدید
بابت پاسختون ممنون ولی چند مسئله
اولا مشکلش چیه که اول واسط کاربر رو طراحی کنم؟ همون طور که گفتم من اول می خوام ماشین حساب ساده ی ساده رو پیاده کنم پس فک نکنم کلاس خاصی نیاز داشته باشم، فعلا فقط یه کلاس simpleUI دارم و کار ها رو هم توش انجام می دم!! می دونم مهندسی نیست ولی فعلا جوابگوه!
دوم اینکه الان برای طراحی دکمه ها از یه image استفاده کردم و چون اندازه ش ثابته یه مقدار به مشکل برخوردم، راه حلش چیه؟؟
سوم اینکه الان دارم از همین متد keypressed استفاده می کنم و نمی خوام با گوشی لمسی کار کنم و توابعش رو استفاده کنم، ولی فقط می تونم از دکمه های 0 تا 9 و مربع و ستاره استفاده کنم و بقیه ی دکمه ها رو نمی تونم دقیق بگیرم به عنوان مثال باید کلید راست رو با کد keyCode==canvas.right -9 از کاربر بگیرم
، این درسته؟؟؟
 
آخرین ویرایش:
بالا