📄 greed.java
字号:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class greed extends Applet implements Runnable {
JButton b1,b2;
int initf=1,kong=1;
int speed=500;
int len=2,len1=3;
int sameflag=0;
int NEW=1,nposx,nposy,rp=0;
int posx,posy,rposx,rposy;
int radius;
Thread thread;
private Image bgImage;
private Graphics bg;
int l,w;
int flag,rflag,fr=1,ffr=1;
Random ran=new Random();
int[] posX;
int[] posY;
int[] tx;
int[] ty;
int[] tx1;
int[] ty1;
JComboBox speedcombobox;
String[] choices={"1","2","3","4","5","6","7","8","9"};
Label scorelabel;
boolean can=false;
public void init(){
speed=500;
rp=0;
NEW=1;
len=2;
len1=3;
posx=150; posy=150;
radius=10;
l=300; w=300;
flag=1;
thread=new Thread(this);
b1=new JButton("开始");
b2=new JButton("暂停");
b1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(ffr==1)
{ speedcombobox.setEnabled(false);
thread.start();
can=true;
initf+=1;
ffr=(ffr+1)%2;
b1.setLabel("重新");
}else{
b1.setLabel("开始");
stop();
can=false;
posx=150;
posy=150;
repaint();
speedcombobox.setEnabled(true);
scorelabel.setText("0");
repaint();
init();
ffr=(ffr+1)%2;
}
}}
);
b2.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(fr==1)
{ suspend();
can=false;
fr=(fr+1)%2;
b2.setLabel("继续");}
else
{thread.resume();
fr=(fr+1)%2;
can=true;
b2.setLabel("暂停");}
}}
);
this.setLayout(null);
b1.setBounds(310,185,80,20);
b2.setBounds(310,220,80,20);
add(b1);
add(b2);
if(initf==1)
{speedcombobox=new JComboBox(choices);
speedcombobox.addItemListener(new SpeedListener());
speedcombobox.setEditable(false);
speedcombobox.setBounds(310,50,80,20);
add(speedcombobox);
scorelabel=new Label("0");
scorelabel.setBounds(310,120,80,20);
add(scorelabel);
}
addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if(can)
judgement(e);
}
});
b1.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if(can)
judgement(e);
}
});
b2.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
if(can)
judgement(e);
}
});
posX=new int[len];
posY=new int[len];
tx1=new int[len];
ty1=new int[len];
tx=new int[len1];
ty=new int[len1];
posX[0]=posx;
posY[0]=posy;
posX[1]=posx;
posY[1]=posy-10;
}
public void suspend(){
if(thread!=null)
thread.suspend();
}
/*public void start(){
if(thread==null)
{thread=new Thread(this);
thread.start();
}}
*/public void stop(){
thread.stop();
}
public void run(){
int i;
while(true){
if(posX[0]==nposx&&posY[0]==nposy)
{len=len+1;
len1=len1+1;
tx1=new int[len];
ty1=new int[len];
for(int m=0;m<posX.length;m++)
{tx1[m]=posX[m];
ty1[m]=posY[m];}
posX=new int[len];
posY=new int[len];
for (int m=0;m<posX.length ;m++)
{posX[m]=tx1[m]; posY[m]=ty1[m];
}
tx=new int[len1];
ty=new int[len1];
rp=0;
NEW=1;
kong=0;
if(posX[len-2]-posX[len-3]==0&&posY[len-2]-posY[len-3]==10)
{posX[len-1]=posX[len-2];
posY[len-1]=posY[len-2]+10;
}
if(posX[len-2]-posX[len-3]==0&&posY[len-2]-posY[len-3]==-10)
{posX[len-1]=posX[len-2];
posY[len-1]=posY[len-2]-10;
}
if(posX[len-2]-posX[len-3]==10&&posY[len-2]-posY[len-3]==0)
{posX[len-1]=posX[len-2]+10;
posY[len-1]=posY[len-2];
}
if(posX[len-2]-posX[len-3]==-10&&posY[len-2]-posY[len-3]==0)
{posX[len-1]=posX[len-2]-10;
posY[len-1]=posY[len-2];
}
}
rposx=posX[0];
rposy=posY[0];
if(rflag==1&&flag==4)
flag=1;
if(rflag==2&&flag==3)
flag=2;
if(rflag==3&&flag==2)
flag=3;
if(rflag==4&&flag==1)
flag=4;
if (flag==1)
{rposx=rposx+0;
rposy=rposy+10;
for(i=0;i<posX.length-1;i++)
{tx[i+1]=posX[i];
ty[i+1]=posY[i];
}
tx[0]=rposx;
ty[0]=rposy;
for(i=0;i<posX.length;i++)
{posX[i]=tx[i];
posY[i]=ty[i];
}
rflag=flag;
}
if(flag==2)
{rposx-=10;
rposy=rposy+0;
for(i=0;i<posX.length-1;i++)
{tx[i+1]=posX[i];
ty[i+1]=posY[i];
}
tx[0]=rposx;
ty[0]=rposy;
for(i=0;i<posX.length;i++)
{posX[i]=tx[i];
posY[i]=ty[i];
}
rflag=flag;}
if(flag==3)
{rposx+=10;
rposy+=0;
for(i=0;i<posX.length-1;i++)
{tx[i+1]=posX[i];
ty[i+1]=posY[i];
}
tx[0]=rposx;
ty[0]=rposy;
for(i=0;i<posX.length;i++)
{posX[i]=tx[i];
posY[i]=ty[i];
}
rflag=flag;
}
if(flag==4)
{rposx+=0;
rposy-=10;
for(i=0;i<posX.length-1;i++)
{tx[i+1]=posX[i];
ty[i+1]=posY[i];
}
tx[0]=rposx;
ty[0]=rposy;
for(i=0;i<posX.length;i++)
{posX[i]=tx[i];
posY[i]=ty[i];
}
rflag=flag;}
if(NEW==1) {
do{
nposx=10*((ran.nextInt() >>> 1)%27+1);
nposy=10*((ran.nextInt()>>>1)%27+1);
for(int n=0;n<posX.length;n++)
if(nposx==posX[n]&&nposy==posY[n])
sameflag=1;
}
while(sameflag==1);
NEW=0;
rp=1;}
if(posX[0]>=290||posX[0]<=3)
ex();
if(posY[0]>=290||posY[0]<=3)
ex();
for(int x=0;x<posX.length-1;x++)
if(posX[0]==posX[x+1]&&posY[0]==posY[x+1])
ex();
this.repaint();
try{Thread.sleep(speed);
}catch(InterruptedException e){e.printStackTrace();}
}
}
public void paint(Graphics g){
g.setColor(Color.red);
for(int i=0;i<5;i++)
g.drawRect(5+i,5+i,290-i*2,290-i*2);
g.setColor(Color.green);
for(int e=0;e<5;e++)
g.drawRect(300+e,5+e,100-e*2,290-e*2);
g.setColor(Color.blue);
if(rp==1)
g.fillRect(nposx,nposy,radius,radius);
for(int i=0;i<posX.length;i++)
g.fillRect(posX[i], posY[i], radius, radius);
b1.repaint();
b2.repaint();
speedcombobox.repaint();
g.drawString("Speed(1..9)",320,40);
g.drawString("Score:",320,100);
scorelabel.setText(Integer.toString((posX.length-2)*10));
scorelabel.setBackground(new Color(191,186,220));
scorelabel.repaint();
g.setColor(Color.magenta);
g.drawString("iqcutewizard",318,260);
g.drawString("2004.2.20",323,280);
if(((posX.length-2)*10)%200==0&&kong==0)
{kong=1;
speed=speed-40;
}
if(speed<=100)
speed=100;
}
public void update(Graphics g) {
if (bgImage == null) {
bgImage = createImage(this.getSize().width,this.getSize().height);
bg = bgImage.getGraphics();
}
bg.setColor(getBackground());
bg.fillRect(0, 0, this.getSize().width,this.getSize().height);
bg.setColor(getForeground());
paint(bg);
g.drawImage(bgImage, 0, 0, this);
}
public void judgement(KeyEvent e) {
switch(e.getKeyCode()) {
case KeyEvent.VK_DOWN:flag=1;repaint();break;
case KeyEvent.VK_LEFT:flag=2;repaint();break;
case KeyEvent.VK_RIGHT:flag=3;repaint();break;
case KeyEvent.VK_UP:flag=4;repaint();break;
default:break;
}
}
public void ex(){
JOptionPane anOptionPane=new JOptionPane();
anOptionPane.showMessageDialog(this,"Game Over! Thank You!","HHr",JOptionPane.WARNING_MESSAGE);
thread.stop();
}
public class SpeedListener implements ItemListener {
public void itemStateChanged(ItemEvent e) {
speed=500-(new Integer(speedcombobox.getSelectedItem().toString()).intValue())*40;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -