1 Востаннє редагувалося Chemist-i (04.05.2014 22:22:49)

Тема: Resist by Chemist [java/j2me]

Программа по фізиці та електротехніці. Розрахунок найпростіших кіл постійного струму.

опис

Вирішив викласти свою програму, яку писав ще коли навчався в інституті, що вона робить: - є замкнуте електричне коло, в якому є активний елемент (позначається батарекйою =) ) і навантаження що включені паралельно і послідовно (позначаються резисторами) номінали можна задавати, а прога розрахує струми та падіння напруги в кожній гілці.

Прога під j2me (java 2 mobile edition), нажаль вивід показати не можу, т.я. нема емулятора під боком завдяки FJ з'явився скріншотік з емулятора.
Схемка виглядатиме приблизно так:
Картинка1
Картинка2

Скомпільований бінарник під старі соніеріксони типу к750-го: Resist_SE_03.rar (там нижче посилання)

(так як я східно-восточноукраїнець - коментарі російською, звиняйте)
Код:

Resist_by_Chemist.java
/*
 * Resist_by_Chemist.java
 *
 * 
 */

import javax.microedition.lcdui.Display;
import javax.microedition.midlet.MIDlet;


/**
 *
 * @author  BMW
 * @version
 */
public class Resist_by_Chemist extends MIDlet {
    canvasResist myCanvas;

      public Resist_by_Chemist() {
          myCanvas=new canvasResist(Display.getDisplay(this)) {

            public void EXIT() {
                destroyApp(false);
                notifyDestroyed();
            }
        };
        myCanvas.setFullScreenMode(true);

      }
    public void startApp() {
        
    }
    
    public void pauseApp() {
        
    }
    
    public void destroyApp(boolean unconditional) {
    }
}
canvasResist.java
/*
 * canvasResist.java
 *
 * 
 */

import java.util.Vector;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Graphics;


/**
 *
 * @author  Chemist
 * @version 0.04 290809 2216
 * 
 * что сделано:
 * 
 * 
 * что нужно сделать?:
 * 1. Фикснуть рисунок сопротивление (vivod=1) (слишком он непонятный на больших экранах)
 * 1. Возможность редактировать созданную схему
 * 2. подписи к кнопкам
 * 3. Справку (встроенную желательно)
 * 4. Локализация на языки мира
 * 5. Оптимизировать код (поубивать лишние переменные, частоиспользуемые локальные сделать глобальными,
 * навести общую красоту кода)
 */



/***/
public /*abstract*/ class canvasResist extends Canvas implements Runnable {

    int XIIII=0;
    Thread thread;

    int kkey=0;

    public void run(){ //Запуск анимированного потока
        if (vivod == 1)
        {
            for (int XJJJ=0;XJJJ<30;XJJJ++)
            {
                XIIII++;

                try {
                    Thread.sleep(20);
                } catch (InterruptedException ex) {
                    ex.printStackTrace();
                }
 
                repaint(0, 0, getWidth(), 83); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(коеф придумать)

            }
            XIIII=0;
        }
        else if (vivod==3)
            do
            {
                if (kkey==jDown || kkey==KEY_NUM8) dy-=5;
                else if (kkey==jUp || kkey==KEY_NUM2) dy+=5;
                else if (kkey==jRight || kkey==KEY_NUM6) dx-=5;
                else if (kkey==jLeft || kkey==KEY_NUM4) dx+=5;

                else if (kkey==KEY_NUM1)
                {
                    dx+=5;
                    dy+=5;
                }
                else if (kkey==KEY_NUM3)
                {
                    dy+=5;
                    dx-=5;
                }
                else if (kkey==KEY_NUM7)
                {
                    dy-=5;
                    dx+=5;
                }
                else if (kkey==KEY_NUM9)
                {
                    dy-=5;
                    dx-=5;
                }

                else break;


                try {
                    Thread.sleep(20);
                } catch (InterruptedException ex) {
                    ex.printStackTrace();
                }

                repaint();
            } while(true);


    }

    /**Коды клавишь, у разных устройств рзные*/
    static final int 
            greenKey = -10, //Nokia, Sony Ericsson, Samsung (new models)
            redKey = 0,
            leftSoftKey = -6,
            rightSoftKey = -7,
            backKey = -11,
            cKey = -8,
            jUp = -1,
            jDown = -2,
            jLeft = -3,
            jRight = -4,
            jFire = -5;
    /*
            greenKey = -11,  //Siemens (old models)
            redKey = -12,
            leftSoftKey = -1,
            rightSoftKey = -4,
            backKey = 0,
            cKey = 0,
            jUp = -59,
            jDown = -60,
            jLeft = -61,
            jRight = -62,
            jFire = -26;
    */
            
    
    Font font;
    //private String Gen = "0";
    byte Star=0;
    Vector StarX = new Vector();
    
    float 
            //E=0, напряжение (пaдение) источника (вводится)
            r=0, //внутреннее сопротивление (вводится)
            Robsh=0; //общее сопротивление схемы (расчитывается)
    
    //private int ii=0;
    
    /**font height*/
    int fh;
    
    /**R1, R2, ... , Rn.  e=0,1,2,...,n*/
    short 
            /***/
            e=0, 
            /***/ 
            u=0;
    
    /**Определяет рисовать: 
     * схему=0, 
     * параметры источника=1, 
     * расчеты=2*/
    short vivod=0,
            dx=0,
            dy=0;
    /***/
    short NLine=1,
          uroven=1;
          
    /**Номер редактируемой ветви (паралельно соедененных резисторов)*/
    short paralCountNum=1;

    
    /**эмпирич коэф для красивого вводас*/
    short a=0,b=0;
    
    /**Количество строк которые можно разместить на экране данного устройства*/
    byte fhCount;
    
    /**Координата начала, (сразу где заканчивается слово вводим)*/
    int yNach=0;
    
    /**Массив сопротивлений*/
    Vector resist = new Vector();
    
    /**Массив количеств паралельных ветвей*/
    Vector paralCount = new Vector();
    
    /***/
    boolean once=true;
    
    /***/
    int i=0, j=0, k=0;
    
    float   g_[],    //проводимость
            Iobsh=0,//Общий ток цепи
            Ie[],   //ток каждого эллемента
            Uls[],  //Падение(разность потенциалов) на логическом участке схемы
            Uvnesh=0, //Падение внешнее
            Epsilon=0;//ЕДС источника питания
    


            Display myDisp;
     
    public canvasResist(Display d){
        myDisp = d;
        d.setCurrent(this);
        repaint();

    }
    
//    public void start(){
////        myDisplay.setCurrent(this);
////        repaint();
//    }
    
    public void paint(Graphics g) {
        
        if (once) {
            resist.addElement("0");
            StarX.addElement("0");
            
            font = g.getFont();
            font = Font.getFont(Font.FACE_SYSTEM, Font.STYLE_PLAIN, Font.SIZE_SMALL/*font.SIZE_MEDIUM*/);
            g.setFont(font);
            fh=font.getHeight();
            
            yNach=8+fh*5;
            fhCount = (byte) ((g.getClipHeight()-yNach)/fh);
            
            once = false;
        }
        g.setFont(font);
        
        g.translate(dx,dy);
        
        g.setColor(0,0,0);
        g.fillRect(-dx,-dy,g.getClipWidth(),g.getClipHeight());

        if (vivod==0)
        {
            about1(g, font);
        }
        else if (vivod==1){ //Экран параметров резисторов
            
            int dxx=-g.getClipWidth()*XIIII/30;

            for (int i=0;i<=1;i++)
            {
                //Рисуем часть схемы где резисторы соеденины паралельно
                g.setColor(255,255,255);

                g.drawLine(dxx+20,2+fh/2 ,dxx+25,2+fh/2 );
                g.drawLine(dxx+20,4+fh+fh/2 ,dxx+25,4+fh+fh/2 );
                g.drawLine(dxx+20,6+2*fh+fh/2 ,dxx+25,6+2*fh+fh/2 );
                g.drawLine(dxx+20,8+3*fh+fh/2+1 ,dxx+25,8+3*fh+fh/2+1 );

                g.drawLine(dxx+g.getClipWidth()-20,2+fh/2 ,dxx+g.getClipWidth()-25,2+fh/2 );
                g.drawLine(dxx+g.getClipWidth()-20,4+fh+fh/2 ,dxx+g.getClipWidth()-25,4+fh+fh/2 );
                g.drawLine(dxx+g.getClipWidth()-20,6+2*fh+fh/2 ,dxx+g.getClipWidth()-25,6+2*fh+fh/2 );
                g.drawLine(dxx+g.getClipWidth()-20,8+3*fh+fh/2+1 ,dxx+g.getClipWidth()-25,8+3*fh+fh/2+1 );

                g.drawLine(dxx+0,5+2*fh ,dxx+20,5+2*fh );                                       //хвосты
                g.drawLine(dxx+g.getClipWidth()-0,5+2*fh ,dxx+g.getClipWidth()-20,5+2*fh );     //хвосты

                g.drawLine(dxx+20,2+fh/2, dxx+20,4*2+4*fh-fh/2);
                g.drawLine(dxx+g.getClipWidth()-20,2+fh/2, dxx+g.getClipWidth()-20,4*2+4*fh-fh/2);

                g.drawRect(dxx+25,2, g.getClipWidth()-50, fh);
                g.drawRect(dxx+25,2+fh+2, g.getClipWidth()-50, fh);
                g.drawRect(dxx+25,2+2*(fh+2), g.getClipWidth()-50, fh);
                g.drawRect(dxx+25,2+3*(fh+2), g.getClipWidth()-50, fh);
                // Закончили рисовать резисторы (прямоугольнички)))

                g.drawString("R"+(e+1), dxx+(g.getClipWidth()/2-3),2,0);
                g.drawString("R"+(e+2), dxx+g.getClipWidth()/2-3,4+fh,0);
                g.drawString("...", dxx+g.getClipWidth()/2-3,6+2*fh,0);
                g.drawString("Rn", dxx+g.getClipWidth()/2-3,8+3*fh,0);

                dxx+=g.getClipWidth();
            }

            g.drawString("Введите:",2,8+fh*4,0);

            if (NLine>=fhCount+a) a++;
            if (NLine<=a+1 && NLine!=1) a--;
            for (i=e+a; i<resist.size(); i++)
                //g.drawString("R"+(i+1)+" = "+resist[i],2,yNach+i*fh,0);
                g.drawString("R"+(i+1)+" = "+resist.elementAt(i),2,(yNach+(i-e)*fh)-a*fh,0);

            g.drawString("\u2193",2,yNach+(i-e-a)*fh,0);

            drawLineSel(g);
        
        } 
        else if (vivod==2) //Экран ввода параметров источника
        { 
            g.setColor(255,255,255);
            
            g.drawLine(0,17,g.getClipWidth()/2-3,17);
            g.drawLine(g.getClipWidth()/2+3,17,g.getClipWidth(),17);
            
            g.drawLine(g.getClipWidth()/2-3,2,g.getClipWidth()/2-3,32);
            g.drawLine(g.getClipWidth()/2+3,9,g.getClipWidth()/2+3,24);
            
            yNach = 34+fh;
            
            g.drawString("Введите E, r источ.:",2,yNach-fh,0);
            
            g.drawString("E = "+resist.elementAt(resist.size()-2),2,yNach,0);
            g.drawString("r = "+resist.elementAt(resist.size()-1),2,yNach+fh,0);
            
            drawLineSel(g);
        } else if (vivod == 3){ //экран вывода расчитаной схемы
            g.setColor(255,255,255);
            //g.drawString("R общее = "+ (Robsh),2,50,0);
            
            int iS[] = new int[paralCount.size()];
            
            int maxHeight =0;
            
            for (i=0;i<iS.length;i++)
                if (maxHeight <  Integer.parseInt(String.valueOf( paralCount.elementAt(i) ) )*3) maxHeight =  Integer.parseInt(String.valueOf( paralCount.elementAt(i) ) )*3;
                
            for (i=0;i<iS.length;i++)
                iS[i]=(maxHeight - Integer.parseInt((String) paralCount.elementAt(i))*3)/2; 
            
            int maxRWidht=0;
            for (i=0;i<resist.size()-2;i++)
                if (maxRWidht < font.stringWidth( String.valueOf(resist.elementAt(i)) )) 
                    if (maxRWidht < font.stringWidth( "I="+String.valueOf(Ie[i]) )) maxRWidht=font.stringWidth( "I="+String.valueOf(Ie[i]) )+10;
                    else maxRWidht=font.stringWidth( String.valueOf(resist.elementAt(i)) );
            
            for (i=0;i<g_.length;i++)
                if (maxRWidht<font.stringWidth("R="+String.valueOf(1/g_[i])))maxRWidht=font.stringWidth("R="+String.valueOf(1/g_[i]));
            
            if (maxRWidht<fh*3) maxRWidht=fh*3;
            
            j=0;
            k=0;
            for (i=0;i<paralCount.size();i++){
                
                if (i>0)
                    if (Integer.parseInt((String) paralCount.elementAt(i-1))>Integer.parseInt((String) paralCount.elementAt(i))) 
                        g.drawLine((i-1)*maxRWidht+(i-1)*2*fh+fh+maxRWidht,  (2)*fh+iS[i-1]*fh+fh/2,  (i-1)*maxRWidht+(i-1)*2*fh+fh+maxRWidht,  (maxHeight+1)*fh+fh/2);
                    else
                        g.drawLine((i-1)*maxRWidht+(i-1)*2*fh+maxRWidht+fh,  (2)*fh-iS[i]*fh+fh/2,  (i-1)*maxRWidht+(i-1)*2*fh+maxRWidht+fh,  (maxHeight+1)*fh+fh/2);
                
                for (j=0;j<Integer.parseInt((String) paralCount.elementAt(i));j++ ){
                    g.drawRect(i*maxRWidht+i*2*fh,  (3*j+2)*fh+iS[i]*fh,  maxRWidht,  fh); //Прямоугольник сопротивления
                    
                    g.drawLine(i*maxRWidht+i*2*fh,  (3*j+2)*fh-4+iS[i]*fh,  i*maxRWidht+i*2*fh+maxRWidht,  (3*j+2)*fh-4+iS[i]*fh); //линия стрелочки
                    g.drawLine(i*maxRWidht+i*2*fh+maxRWidht,  (3*j+2)*fh-4+iS[i]*fh,  i*maxRWidht+i*2*fh+maxRWidht-3,  (3*j+2)*fh-4+iS[i]*fh-2); //хвостик стрелочки вверх
                    g.drawLine(i*maxRWidht+i*2*fh+maxRWidht,  (3*j+2)*fh-4+iS[i]*fh,  i*maxRWidht+i*2*fh+maxRWidht-3,  (3*j+2)*fh-4+iS[i]*fh+2); //хвостик стрелочки вниз
                    
                    g.drawString("I="+Ie[k],i*maxRWidht+i*2*fh+(maxRWidht-font.stringWidth("I="+String.valueOf(Ie[k])))/2,  (3*j+1)*fh-4+iS[i]*fh,  0); //Текст силы тока
                    g.drawString( (String) resist.elementAt(k),  i*maxRWidht+i*2*fh+(maxRWidht-font.stringWidth(String.valueOf(resist.elementAt(i))))/2,  (3*j+2)*fh+iS[i]*fh,  0);//Текст сопротивления
                    
                    g.drawLine(i*maxRWidht+i*2*fh-fh,  (3*j+2)*fh+iS[i]*fh+fh/2,  i*maxRWidht+i*2*fh,  (3*j+2)*fh+iS[i]*fh+fh/2); //хвостик резистора левый
                    g.drawLine(i*maxRWidht+i*2*fh+maxRWidht,  (3*j+2)*fh+iS[i]*fh+fh/2,  i*maxRWidht+i*2*fh+fh+maxRWidht,  (3*j+2)*fh+iS[i]*fh+fh/2); //хвостик резистора правый
                    
                    
                    k++;
                }
                g.drawString("U="+Uls[i],  i*maxRWidht+i*2*fh+(maxRWidht-font.stringWidth("U="+String.valueOf(Uls[i])))/2,  (maxHeight+1)*fh,  0);
                g.drawString("R="+(1/g_[i]),  i*maxRWidht+i*2*fh+(maxRWidht-font.stringWidth("R="+String.valueOf(1/g_[i])))/2,  (maxHeight+2)*fh,  0);
            }
            
            int hz=(maxHeight+4)*fh;
            
            g.drawLine(-fh,  (2)*fh+iS[0]*fh+fh/2,  -fh,  17+hz); //левая вертикальная палка
            g.drawLine( ((paralCount.size())*(maxRWidht+2*fh)-fh),  2*fh+iS[iS.length-1]*fh+fh/2,  ((paralCount.size())*(maxRWidht+2*fh)-fh),   17+hz); //правая вертикальная палка
            
            g.drawLine(-fh,  17+hz,  ((paralCount.size())*(maxRWidht+2*fh)-fh)/2-3,17+hz); //левая горизонтальная палка
            g.drawLine(((paralCount.size())*(maxRWidht+2*fh)-fh)/2+3,17+hz,((paralCount.size())*(maxRWidht+2*fh)-fh),17+hz);//правая горизонтальная палка
            
            g.drawLine(((paralCount.size())*(maxRWidht+2*fh)-fh)/2-3,2+hz,((paralCount.size())*(maxRWidht+2*fh)-fh)/2-3,32+hz);//левая палка самого источника
            g.drawLine(((paralCount.size())*(maxRWidht+2*fh)-fh)/2+3,9+hz,((paralCount.size())*(maxRWidht+2*fh)-fh)/2+3,24+hz);//правая палка самого источника
            
            g.drawString("E ист="+resist.elementAt(resist.size()-2)+"; r ист="+resist.elementAt(resist.size()-1),  000,  hz+fh*2,  0);
            g.drawString("R общ цепи="+Robsh+"; I общ цепи="+Iobsh,  000,  hz+fh*3,  0);
            g.drawString("U внешнее цепи="+Uvnesh,  000,  hz+fh*4,  0);
        }
        
        
        /* Debug information *//*
        System.out.println("----------------------------New paint----------------------------");
        System.out.println("e="+e);
        System.out.println("u="+u);
        System.out.println("uroven="+uroven);
        System.out.println("fhCount="+fhCount);
        System.out.println("yNach="+yNach);
        System.out.println("fh="+fh);
        int j=0;
        System.out.println("resist.size()="+resist.size());
        for (j=0;j<resist.size();j++)
            System.out.println("resist.elementAt("+j+")="+resist.elementAt(j));
        for (j=0;j<StarX.size();j++)
            System.out.println("StarX.elementAt("+j+")="+StarX.elementAt(j));
        System.out.println("paralCount.size()="+paralCount.size());
        for (j=0;j<paralCount.size();j++)
            System.out.println("paralCount.elementAt("+j+")="+paralCount.elementAt(j));
        System.out.println("----------------------------End paint----------------------------");         
        
        /*-------------------*/

        
        
       /* g.setColor(255,255,255);
        g.drawString(Gen,0,0,0);
        
        g.drawString(String.valueOf(Star),0,20,0);
        g.drawString(""+ii,0,40,0);
        */
        

    }
    
    /***/
    public void drawLineSel(Graphics g){
        g.setColor(255,255,0);

        g.drawLine(0,yNach+(NLine-1-a)*(fh), g.getClipHeight(),yNach+(NLine-1-a)*(fh));
        g.drawLine(0,yNach+(NLine-a)*(fh), g.getClipHeight(),yNach+(NLine-a)*(fh));

    };    
    
    /**количество знаков после запятой, и преобразует в формат текста*/
  /*  public String precision(double old){
        int prec=3;
        k=1;
        for (i=0;i<prec;i++) k*=10;//находим степень прец
        
        return String.valueOf( (int) old ); //3 и есть колво знаков после запятой
    }*/
   
    
    /**Вычисляем параметры схемы(токи, напряжения и т.д.)*/
    public void raschet(){
                g_ = new float[paralCount.size()]; //проводимость
                Iobsh=0;                            //Общий ток цепи
                Ie=new float [resist.size()-2];   //ток каждого эллемента
                Uls=new float[paralCount.size()]; //Падение(разность потенциалов) на логическом участке схемы
                Uvnesh=0;                           //Падение внешнее
                Epsilon=0;                          //ЕДС источника питания
                
        
        int delta =0;
        j=0;
        Robsh=0;
        for (j=0; j<paralCount.size();j++){
            g_[j]=0;
            delta += (j==0)?0:Integer.parseInt((String) paralCount.elementAt(j-1));
            for (i=delta; i<delta+Integer.parseInt((String) paralCount.elementAt(j));i++)
                g_[j] += 1/Double.parseDouble((String) resist.elementAt(i)); //проводимость на логичском участке
            
            Robsh+=1/g_[j];      //Общее сопротивление цепи
        }

        Iobsh = Float.parseFloat((String) resist.elementAt(resist.size()-2)) / (Robsh + Float.parseFloat((String) resist.elementAt(resist.size()-1))); //Общий ток схемы I=E/(Robsh+r)
        
        for(i=0;i<paralCount.size();i++)
            Uls[i]=Iobsh/g_[i];  //Падение (разность потенцалов) на логическом участке
        
        delta =0;
        for (i=0;i<paralCount.size();i++){
            delta += (i==0)?0:Integer.parseInt((String) paralCount.elementAt(i-1));
            for (j=delta; j<delta+Integer.parseInt((String) paralCount.elementAt(i));j++){
                Ie[j]=0;
                Ie[j]=Uls[i]/Float.parseFloat( (String) resist.elementAt(j) ); //сила тока на каждом эллементе
            }
        }
        
        Uvnesh=Iobsh*(Robsh+r); //Находим внешнее падение напряжений
//----------------debug information------------------------
        /*System.out.println("------------------------Raschet()------------------------");
        System.out.println("Robsh="+String.valueOf(Robsh));
        System.out.println("Iobsh="+String.valueOf(Iobsh));
        System.out.println("Uvnesh="+String.valueOf(Uvnesh));
        System.out.println("Epsilon="+String.valueOf(Epsilon));
        
        for (i=0;i<paralCount.size();i++){
            System.out.println("g["+i+"]="+g[i]);
            System.out.println("Uls["+i+"]="+Uls[i]);
        }
        for (i=0;i<resist.size()-2;i++)
            System.out.println("Ie["+i+"]="+Ie[i]);
        
        System.out.println("---------------------------------------------------------");*/
//---------------------------------------------------------
    }    

    /** Создает число получаемое с клавиатуры */
    public String AddSymbol(String OldExt, int Key) {

        if (Key == cKey || Key == greenKey){
            if (Star > 0) Star--;
            byte aa;
            if (Double.parseDouble(OldExt) < 0 ) aa = 2; else aa = 1;
            if (OldExt.length() > aa){
                OldExt = OldExt.substring(0,OldExt.length()-1);
            } else {
                if (OldExt != "0") {
                    OldExt = "0";
                } else
                    if (resist.size()-e > 1){
                        resist.removeElementAt(NLine-1+e);
                        StarX.removeElementAt(NLine-1+e);
                        //if ((resist.size()-e)==0) paralCount.removeElementAt(paralCount.size()-1);
                        if (NLine>1) NLine--;
                        OldExt=String.valueOf( resist.elementAt(NLine-1+e) );
                        Star = Byte.parseByte( (String) StarX.elementAt(NLine-1+e) );
                    }
            }        
        } else if ((Key>=KEY_NUM0 && Key<=KEY_NUM9) || Key == KEY_STAR || Key == KEY_POUND ){


        if ( Double.parseDouble(OldExt) == 0 && Star == 0 && Key != KEY_STAR && Key != KEY_POUND) OldExt = "";

        if (Key == KEY_NUM1) {
            OldExt += "1";
        } else if (Key == KEY_NUM2) {
            OldExt += "2";
        } else if (Key == KEY_NUM3){
            OldExt += "3";
        } else if (Key == KEY_NUM4){
            OldExt += "4";
        } else if (Key == KEY_NUM5){
            OldExt += "5";
        } else if (Key == KEY_NUM6){
            OldExt += "6";
        } else if (Key == KEY_NUM7){
            OldExt += "7";
        } else if (Key == KEY_NUM8){
            OldExt += "8";
        } else if (Key == KEY_NUM9){
            OldExt += "9";
        } else if (Key == KEY_NUM0){
            OldExt += "0";
        } else if (Key == KEY_STAR && Star <= 0){
            OldExt += ".";
            Star += 1;
        } else if (Key == KEY_POUND){
            if (Double.parseDouble(OldExt) < 0) OldExt = OldExt.substring(1);
            else if (Double.parseDouble(OldExt) > 0) OldExt = "-"+OldExt;
        }

        if (Star > 0 && Key != KEY_STAR && Key != KEY_POUND){
            Star += 1;
        }


        }
       return OldExt; 
    }

    protected  void keyPressed(int key) {
        repaint();
        
        if (vivod==0) { //экран "о программе"
            if (key==jDown || key==KEY_NUM8) 
            {
                /*if (dy<=0) */dy-=10;
            }
            else if (key==jUp || key==KEY_NUM2) dy+=10;
            else if (key==jFire || key == KEY_NUM5 || key==rightSoftKey) {
                dx=0;
                dy=0;
                vivod=1;
            }

            else if (key == KEY_POUND)
            {
                
            }
            
        } else if (vivod==1){ //экран ввода параметров резисторов
            if (key == jUp) {
                if (NLine<2) NLine = 1;
                else 
                {
                    NLine--;
                    if ( Float.parseFloat(  (String)(resist.lastElement()) ) == 0 ) //преобразовываем последний елемент вектора "resist" в
                    {
                        resist.removeElementAt(resist.size()-1);
                        StarX.removeElementAt(StarX.size()-1);
                    }
                }

            } else if (key == jDown) {
                if (  Float.parseFloat((String)(resist.lastElement()) )!=0)
                {
                    NLine++;
                    if (NLine-1>=resist.size()-e){
                        resist.addElement("0");
                        StarX.addElement("0");
                    }
                }
            } else if (key == jRight){
                if ( Float.parseFloat(  (String)(resist.lastElement()) ) != 0 )
                {
//                    resist.removeElementAt(resist.size()-1);
//                    StarX.removeElementAt(StarX.size()-1);
                

                    if (resist.size()-e>0){
                        paralCount.addElement( String.valueOf( resist.size()-e ));//Переходм на новый уровень
                        if (paralCount.size()>0) e+=Short.parseShort( (String) paralCount.lastElement() ); //Находим е
                    }
                    NLine=1;
                    paralCountNum++;
                    resist.addElement("0");
                    StarX.addElement("0");
                    a=0;

                    /**Запускаем анимацию (причем в космос :-) ) (ТЕСТ)*/
                    thread = new Thread(this);
                    thread.start();
                    /*--------------------------*/
                }


            } else if (key == jLeft)
            {
                if (paralCountNum < 2) paralCountNum = 1;
                else paralCountNum--;
                //if (paralCount.lastElement())



            } else if (key == jFire || key == rightSoftKey){
                paralCount.addElement( String.valueOf( resist.size()-e ) );
                NLine = 1;
                resist.addElement("0");
                resist.addElement("0");
                StarX.addElement("0");
                StarX.addElement("0");
                
                vivod =2; //переходим к вводу параметров источника
            } else
            {
                Star = Byte.parseByte( (String) StarX.elementAt(NLine-1+e) );
                resist.setElementAt(AddSymbol((String) resist.elementAt(NLine-1+e), key), (NLine-1+e));
                StarX.setElementAt(String.valueOf(Star), NLine-1+e);
            }
            
        } else if (vivod==2){//Экран ввода параметров источника
            if (key == jUp) {
                if (NLine<=1) NLine = 1; else NLine--;
            } else if (key == jDown) {
                if (NLine>=2) NLine = 2; else NLine++;
                    
            } else if (key == jFire || key == rightSoftKey){
                raschet();
                vivod=3;
                dx=25; //импирическим методом вывел (чтоб красивше было при выводе окончательной схемы)
                dy=-15;
            } else {
                Star = Byte.parseByte( (String) StarX.elementAt(NLine==1?StarX.size()-2:StarX.size()-1) );
                resist.setElementAt(((String) AddSymbol((String) resist.elementAt(resist.size()-(NLine==1?2:1)), key)),(resist.size()-(NLine==1?2:1)));
                
                StarX.setElementAt(String.valueOf(Star), NLine==1?StarX.size()-2:StarX.size()-1);
            }
            
        } else if (vivod==3){//экран вывода расчитаной схемы

            thread = new Thread(this);
            thread.start();

            if (key == jFire || key == rightSoftKey || key == KEY_NUM5)
                EXIT();
            else
                kkey=key;

        }
        //if (NLine<=fhCount-7) {NLine=1;}
        
        repaint();
    }
    
    /**Запуск "о проекте"*/
public void about1(Graphics g, Font font){
    g.setColor(50,50,50);
    g.fillRect(-dx,-dy,g.getClipWidth(),g.getClipHeight());
    
    g.setColor(0,0,0);
    g.fillRect(-dx+5,-dy+5,g.getClipWidth()-10,g.getClipHeight()-10);
    
    g.setColor(20,20,20);
    g.fillRect(-dx+7,-dy+7,g.getClipWidth()-14,g.getClipHeight()-14);
    
    g.setColor(255,255,255);
    String str[] =
    {
        "ТЕСТОВАЯ ВЕРСИЯ (0.04)",
        "АВТОР НЕ НЕСЕТ",
        "НИКАКОЙ",
        "ОТВЕТСТВЕННОСТИ!",
        "Сделал Chemist в 2008г.",
        "Идея и тест Васильев И.",
        "Замечания на e-mail:",
        "«Chemist-i@сайт-злодій»",
        "Профиль MIDP-2.0",
        "Конфигурация CLDC 1.1",
        "Удачи!"
    };
    int hei;
    for (byte ir = 0; ir < str.length; ir++){
        hei = font.stringWidth(str[ir]);
        g.drawString(str[ir],(g.getClipWidth()-hei)/2,((ir)*fh)+7,0);
    }
    str = new String[0];
    
    
}

    /**При отпускании клавиш*/
    protected  void keyReleased(int keyCode) {
        kkey=0;
    }

    protected  void keyRepeated(int key) {
        //keyPressed(key);
    }
    

   public void EXIT(){


   };

}
Post's attachments

all.jpg 161.14 kb, 309 downloads since 2014-05-04 

DSC08124_org1.jpg 408.02 kb, 312 downloads since 2014-05-04 

Resist_SE_03.rar 5.84 kb, 425 downloads since 2014-05-04 

X_sagt_obr1.jpg 217.26 kb, 315 downloads since 2014-05-04 

2

Re: Resist by Chemist [java/j2me]

Зробіть скріншот з емулятора, Східно-Восточноукраїнцю

Подякували: Chemist-i1

3 Востаннє редагувалося Chemist-i (04.05.2014 15:00:32)

Re: Resist by Chemist [java/j2me]

0xDADA11C7 написав:

Зробіть скріншот з емулятора, Східно-Восточноукраїнцю

Вже зробив, посилання в тексті (all.jpg)

Подякували: 0xDADA11C71

4

Re: Resist by Chemist [java/j2me]

Прихований текст

кіл

Подякували: Chemist-i1

5

Re: Resist by Chemist [java/j2me]

нагадало

Хмарочос стирчить як кіл, знову злодій негра kill

6

Re: Resist by Chemist [java/j2me]

Invader написав:
Прихований текст

кіл

дякую, виправив =)