Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.05.2012, 21:01   #1
Lord_of_dayS
Новичок
Джуниор
 
Регистрация: 13.05.2012
Сообщений: 4
Смущение Аплет

Ребята! Помогите пожалуйста переделать программку! Вот есть исходник под старый jdk. Вкратце что тут происходит: прорисована машина, дорога и светофор. При нажатии на зеленый цвет светофора машина едет, на желтый - едет в два раза медленнее, на красный - останавливается. Заранее спасибо!




import java.awt.*;
import java.applet.*;
import java.awt.event.*;

public class Applet1 extends Applet
{
int WidthL=80,HeightL=70, W=780, H=400, XStartL, YStartL;
Image imR, imG, imE;
Image L[];
String Lnames[];
Image C[];
String Cnames[];
String strL;
int CarW=300,CarH=100;
int x=-10-CarW, y=-10-CarH, i, Lnow=0,NumCars=5,Cnow=1;
int d=100,dx=0, dy=0, dirx=1, diry=1;
int YHRoad=H/2+50, XDRoad1=(int)(W*0.8), XDRoad2=20;
double naklon=-0.1;
int WRoad=100, DRoad=280,RoadNotDraw=1;

MyTimer TimerThread = null;

public void init()
{
initForm();
usePageParams();
XStartL= 50;
YStartL=10;
L = new Image[6];
Lnames = new String[6];
Lnames[0]="red.jpg";
Lnames[1]="ellow.jpg";
Lnames[2]="green.jpg";
Lnames[3]="red_l.jpg";
Lnames[4]="ellow_l.jpg";
Lnames[5]="green_l.jpg";
for (i=0;i<6; i++) L[i]= getImage(getDocumentBase(), Lnames[i]);
C = new Image[NumCars];
Cnames = new String[NumCars];
Cnames[0]="car1.jpg";
Cnames[1]="car2.jpg";
Cnames[2]="car3.jpg";
Cnames[3]="car4.jpg";
Cnames[4]= "car12.jpg";
//Cnames[5]= "car2.jpg";
for (i=0;i<NumCars; i++)
{ C[i]= getImage(getDocumentBase(), Cnames[i]);}
H=this.getSize().height;
W=this.getSize().width;
//DrawRoads(this.getGraphics());
// Определяет, создает и регистрирует объект MouseListener.
this.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
mouseClick(e.getX(),e.getY()); }
});
}
public void OnResize(){
RoadNotDraw=1;
x=-800;
y=-800;
}
public void mouseClick(int x, int y) {
if ((x>XStartL)&&(x<XStartL+WidthL))
if((y>YStartL)&&(y<YStartL+HeightL* 3))
{ Lnow=(y-YStartL)/HeightL;
update(this.getGraphics());
switch ( Lnow ) {
case 0: dx=0; dy=0; break;
case 1: d=50; dx=1; dy=1; break;
case 2: d=20; dx=5; dy=5; break;
default: dx=0; d=100;
}
};
}

public void paint(Graphics g) { update(g);}

public void update(Graphics g) {
for (i=0;i<3; i++)
if (i==Lnow)
g.drawImage(L[Lnow+3], XStartL, YStartL+HeightL*i, this);
else
g.drawImage(L[i], XStartL, YStartL+HeightL*i, this);
if(RoadNotDraw<5)DrawRoads(g);
}
public int GetD() {return d;};

public void DrawCar(Graphics g){
double n2=17;
if ((x<-CarW)||(x>W+CarW)||(y<-CarH)||(y>H+CarH)){
//new car
Cnow=(int)(NumCars*Math.random());
switch ( Cnow%4 ) {
case 0: dirx= 1; diry= 0; x=0; y=YHRoad; break;
case 1: dirx=-1; diry= 0; x=W; y=YHRoad; break;
case 2: dirx=-1; diry=1; x=XDRoad1; y=0; break;
case 3: dirx=1; diry=-1; x=(int)(H*naklon); y=H; break;
}
};
switch ( Cnow ) {
case 2:
y+=(int)(dy*diry/2); x=20+XDRoad1+(int)(y*naklon*n2); break;
case 3:
y+=(int)(dy*diry/2); x=20+XDRoad1+(int)(y*naklon*n2); break;
default:
x+=dx*dirx;
y+=dy*diry;
}
g.drawImage(C[Cnow], x, y, this);
};
public void DrawRoads(Graphics g) {
int xDR[],yDR[];
xDR=new int[4];
yDR=new int[4];
xDR[0]=XDRoad1; yDR[0]=0;
xDR[1]=XDRoad1+DRoad; yDR[1]=0;
xDR[2]=(int)(H*naklon)+DRoad; yDR[2]=H;
xDR[3]=(int)(H*naklon); yDR[3]=H;
g.setColor(new Color(255,255,255));
g.fillRect(0, YHRoad, W, WRoad);
g.fillPolygon(xDR,yDR,4);
RoadNotDraw++;
}
private final String labelParam = "label";
private final String backgroundParam = "background";
private final String foregroundParam = "foreground";

private void usePageParams()
{
final String defaultLabel = "Default label";
final String defaultBackground = "156413";
final String defaultForeground = "000000";
String labelValue;
String backgroundValue;
String foregroundValue;

this.setBackground(stringToColor("1 56413"));
}
Lord_of_dayS вне форума Ответить с цитированием
Старый 13.05.2012, 21:01   #2
Lord_of_dayS
Новичок
Джуниор
 
Регистрация: 13.05.2012
Сообщений: 4
По умолчанию

Продолжение:


private Color stringToColor(String paramValue)
{
int red;
int green;
int blue;

red = (Integer.decode("0x" + paramValue.substring(0,2))).intValu e();
green = (Integer.decode("0x" + paramValue.substring(2,4))).intValu e();
blue = (Integer.decode("0x" + paramValue.substring(4,6))).intValu e();

return new Color(red,green,blue);
}

/**
* External interface used by design tools to show properties of an applet.
*/
public String[][] getParameterInfo()
{
String[][] info =
{
{ labelParam, "String", "Label string to be displayed" },
{ backgroundParam, "String", "Background color, format \"rrggbb\"" },
{ foregroundParam, "String", "Foreground color, format \"rrggbb\"" },
};
return info;
}

Label label1 = new Label();

void initForm()
{
this.setBackground(Color.green);
this.setForeground(Color.black);
}

public void start()
{
if (TimerThread == null)
{
TimerThread =
new MyTimer(this);
m_DrawRectThread.start();
}
}

public void stop()
{
if (TimerThread != null)
{
m_DrawRectThread.stop();
TimerThread = null;
}
}
}
//////// new class
class MyTimer extends Thread
{
Graphics g;
Dimension dimAppWndDimension;
int i, cnt=0;
Applet1 Mama;
public MyTimer(Applet1 Appl)
{
g = Appl.getGraphics();
dimAppWndDimension = Appl.getSize();
Mama=Appl;
}
public void run()
{
while (true)
{
Mama.DrawCar(g);
try
{
Thread.sleep(Mama.GetD());
}
catch (InterruptedException e)
{
stop();
}
}
}
}
Lord_of_dayS вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Аплет Lord_of_dayS Помощь студентам 1 13.05.2012 20:54