Тема: Resist by Chemist [java/j2me]
Программа по фізиці та електротехніці. Розрахунок найпростіших кіл постійного струму.
Вирішив викласти свою програму, яку писав ще коли навчався в інституті, що вона робить: - є замкнуте електричне коло, в якому є активний елемент (позначається батарекйою ) і навантаження що включені паралельно і послідовно (позначаються резисторами) номінали можна задавати, а прога розрахує струми та падіння напруги в кожній гілці.
Прога під j2me (java 2 mobile edition), нажаль вивід показати не можу, т.я. нема емулятора під боком завдяки FJ з'явився скріншотік з емулятора.
Схемка виглядатиме приблизно так:
Картинка1
Картинка2
Скомпільований бінарник під старі соніеріксони типу к750-го: Resist_SE_03.rar (там нижче посилання)
(так як я східно-восточноукраїнець - коментарі російською, звиняйте)
Код:
/*
* 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
*
*
*/
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(){
};
}
all.jpg 161.14 kb, 332 downloads since 2014-05-04
DSC08124_org1.jpg 408.02 kb, 327 downloads since 2014-05-04
Resist_SE_03.rar 5.84 kb, 455 downloads since 2014-05-04
X_sagt_obr1.jpg 217.26 kb, 335 downloads since 2014-05-04