跪求JAVA编写的小游戏源代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了跪求JAVA编写的小游戏源代码相关的知识,希望对你有一定的参考价值。

import java.awt.*;
import java.applet.*;
import java.awt.event.*;
import java.awt.image.*;
import java.awt.geom.*;
import java.util.*;
class Car
Image img;
int x, y;
Dimension dim;
Car(Image img)
this.img=img;

Car(Image img, int x, int y)
this.img=img; this.x=x; this.y=y;

Car(Image img, int x, int y, Dimension dim)
this(img, x, y);
this.dim=dim;

void draw(Graphics g, ImageObserver observer)
g.drawImage(img, x, y, observer);

int getX() return x;
int getY() return y;
void setX(int x)this.x=x;
void setY(int y)this.y=y;
void setLocation(int x, int y)
this.x=x; this.y=y;


int getWidth() return img.getWidth(null);
int getHeight() return img.getHeight(null);
Rectangle2D getRectangle()
return new Rectangle2D.Float(x, y, getWidth(), getHeight());

void move(int dx, int dy)
x+=dx;
y+=dy;
if(dim!=null)
if(x<0)x=0;
if(x+getWidth()>dim.getWidth())
x=(int)dim.getWidth()-getWidth();


boolean intersects(Car car)
return getRectangle().intersects(car.getRectangle());

boolean intersects(int x, int y)
return getRectangle().intersects(x, y, getWidth(), getHeight());


public class CarRace extends Applet implements KeyListener, Runnable
Image buff;
Canvas screen;
Graphics2D gs, gb;
Car redCar;
Car[] enemy=new Car[20];
Button bStart;
Thread game;
boolean loop=true;
Dimension dim=new Dimension(200, 300);
int road;
Random rnd=new Random();
public void init()
prepareResource();
setBackground(Color.blue);
initScreen();
add(screen);
bStart=new Button("霸烙 矫累");
add(bStart);
bStart.addActionListener(new ActionListener()
public void actionPerformed(ActionEvent ae)
screen.requestFocus();
if(!game.isAlive())
game.start();

);

void prepareResource()
Image imgRed=getImage(getCodeBase(),"images/red_car.gif");
Image imgBlue=getImage(getCodeBase(),"images/blue_car.gif");
Image imgGreen=getImage(getCodeBase(),"images/green_car.gif");
MediaTracker mt=new MediaTracker(this);
try
mt.addImage(imgRed, 0);
mt.addImage(imgBlue, 1);
mt.addImage(imgGreen, 2);
mt.waitForAll();
catch(Exception e)
buff=createImage((int)dim.getWidth(), (int)dim.getHeight());
gb=(Graphics2D)buff.getGraphics();
redCar=new Car(imgRed, 80,250, dim);

for(int i=0;i<10;i++)
enemy[i]=new Car(imgBlue, 0, 0);

for(int i=10;i<enemy.length;i++)
enemy[i]=new Car(imgGreen, 0, 0);

for(int i=0;i<enemy.length;i++)
setEnemy(i);

game=new Thread(this);

public void stop()
loop=false;

public void run()
while(loop)
drawScreen();
try Thread.sleep(50);catch(Exception e)


void initScreen()
screen=new Canvas()
public void paint(Graphics g)
if(gs==null)
gs=(Graphics2D)screen.getGraphics();

drawScreen();

;
screen.setSize(dim);
screen.addKeyListener(this);

void setEnemy(int en)
int x, y;
next:while(true)
x=rnd.nextInt((int)dim.getWidth()-enemy[en].getWidth());
y=-rnd.nextInt(5000)-200;
for(int j=0;j<enemy.length;j++)
if(j!=en && enemy[j].intersects(x, y))continue next;

enemy[en].setLocation(x, y);
break;


void check(Car en)
if(redCar.intersects(en))
if(redCar.getX()>en.getX())
en.move(-20, 0);
redCar.move(20, 0);

else
en.move(20,0);
redCar.move(-20, 0);



synchronized void drawScreen()
gb.clearRect(0, 0, (int)dim.getWidth(), (int)dim.getHeight());
gb.setPaint(new Color(100, 100, 100));
gb.fillRect(0, 0, (int)dim.getWidth(), (int)dim.getHeight());
drawRoad();
for(int i=0;i<enemy.length;i++)
enemy[i].move(0, 15);
enemy[i].draw(gb, screen);
if(enemy[i].getY()>dim.getHeight())
setEnemy(i);
check(enemy[i]);

redCar.draw(gb, screen);
gs.drawImage(buff, 0,0, screen);

void drawRoad()
road+=80;
gb.setPaint(Color.yellow);
gb.fillRect((int)dim.getWidth()/2, road,10,150);
if(road>=dim.getHeight())road=-150;

public void keyPressed(KeyEvent ke)
if(ke.getKeyCode()==KeyEvent.VK_LEFT)
redCar.move(-10,0);

else if(ke.getKeyCode()==KeyEvent.VK_RIGHT)
redCar.move(10,0);


public void keyReleased(KeyEvent ke)
public void keyTyped(KeyEvent ke)

这个是一个典型的Applet,文件名应该是CarRace.java,需要图片作为车子等等,本人也是别人给的,但是还要个.html文件来运行它,代码为:
<Applet code="CarRace.class" width=250 height=350 >
</Applet>
请楼主采纳
参考技术A labelHelp = new JLabel("PageUp, PageDown for speed;", JLabel.CENTER); 参考技术B 360.240

用JAVA编写一个小游戏

用JAVA程序编写一个小游戏 不带界面的

前天写的猜数字游戏,yong i控制猜测次数,有详细解析,用黑窗口可以直接运行,

我试验过了,没问题

import javax.swing.Icon;
import javax.swing.JOptionPane;
public class CaiShuZi4JOptionPane
/**
* @param args
*/
public static void main(String[] args)
Icon icon = null;
boolean bl = false;
int put = 0;
int c = (int) (((Math.random())*100)+1); //获取一个1-100的随机数
System.out.println("你获取的随机数是:"+c); //打印你的随机数字

String str1 = (String) JOptionPane.showInputDialog(null,"请输入你的猜测数字(1-100):\\n","猜数字游戏",JOptionPane.PLAIN_MESSAGE,icon,null,"在这输入"); //第一次输入你的猜测数字

if(str1==null)
JOptionPane.showMessageDialog(null, "你已经取消了本次游戏"); //如果你点取消那么本次游戏结束
else
bl = num(str1); //判断是输入的是不是数字或者是整数
if(true==bl) //如果是数字的话进入与随机数比较的程序
System.out.println("你输入的数字是:"+str1); //打印你输入的数字
put = Integer.valueOf(str1);

for(int i = 4;i > 0;i--) //i是你可以猜测的次数
if(put==c)
JOptionPane.showMessageDialog(null, "恭喜你猜对了,正确答案是:"+c+"。"); //如果你猜对了就直接结束循环
break;
else if(put>c) //如果输大了就让你再次从新输入
str1 = (String) JOptionPane.showInputDialog(null,"你的输入过大。你还有"+i+"次机会,请重新输入:\\n","猜数字游戏",JOptionPane.PLAIN_MESSAGE,icon,null,"在这输入");
if(str1==null)
JOptionPane.showMessageDialog(null, "你已经取消了本次输入");
break;
else
bl =num(str1);
if(true==bl)
put = Integer.valueOf(str1);
else
JOptionPane.showMessageDialog(null, "你的输入不正确,请重新输入");


else if(put<c) //如果你输小了也让你从新输入
str1 = (String) JOptionPane.showInputDialog(null,"你的输入过小。你还有"+i+"次机会,请重新输入:\\n","猜数字游戏",JOptionPane.PLAIN_MESSAGE,icon,null,"在这输入");
if(str1==null)
JOptionPane.showMessageDialog(null, "你已经取消了本次输入");
break;
else
bl =num(str1);
if(true==bl)
put = Integer.valueOf(str1);
else
JOptionPane.showMessageDialog(null, "你的输入不正确,请重新输入");






else if(bl==false) //这个 是你第一次如果填写的不是数字的话也会结束本次游戏
JOptionPane.showMessageDialog(null, "请您下次按要求填写。本次游戏结束");

if(true==bl && c!=put) //如果你i次都没猜对,那么就直接告诉你这个数十什么
JOptionPane.showMessageDialog(null, "很遗憾你没能猜对,这个数字是:"+c+".");






public static boolean num(String value) //一个静态方法,判断你输入的是不是数字
try
Integer.parseInt(value);
return true;
catch (Exception e)
return false;



参考技术A import javax.swing.* ;
import java.awt.* ;
import java.awt.event.* ;

public class ZiMu extends JFrame
ZiMu()
this.setSize(300 , 600) ;
this.setResizable(false) ;
this.setTitle("打字游戏") ;
this.setBackground(Color.BLACK) ;

MyPanel mp = new MyPanel() ;
this.add(mp) ;
this.addKeyListener(mp) ;

Thread t = new Thread (mp) ;
t.start() ;

public static void main(String args[])
ZiMu w = new ZiMu () ;
w.setVisible(true) ;



class MyPanel extends JPanel implements Runnable, KeyListener
int x[] = new int[10] ;
int y[] = new int[10] ;
int sum = 0 ;
String z[] = new String[10] ;

MyPanel()
for(int i=0;i<10;i++)
x[i] = (int)(Math.random()*300) ;
y[i] = (int)(Math.random()*300) ;
z[i] = new String(""+(char)(Math.random()*25+65)) ;


public void paint(Graphics g)
super.paint(g) ;

this.setBackground(Color.black) ;
g.setColor(Color.WHITE) ;
g.drawString("一分钟正确打对的字母: "+sum , 10 , 560) ;
for(int i=0;i<10;i++)
g.drawString(z[i] , x[i] , y[i]) ;


public void run()
long g = System.currentTimeMillis() ;

while(System.currentTimeMillis()-g<=60000)

for(int i=0;i<10;i++)
y[i] ++ ;
if(y[i]>= 600)
sum -= 1 ;
y[i] = (int)(Math.random()*50) ;
x[i] = (int)(Math.random()*280) ;
z[i] = new String(""+(char)(Math.random()*25+65)) ;


try
Thread.sleep(20) ;

catch(Exception e)

this.repaint() ;




public void keyTyped(KeyEvent e)
// TODO: Add your code here


public void keyPressed(KeyEvent e)
String keychar = new String(""+e.getKeyChar()) ;
int yy = 0 ;
int j = -1 ;

for(int i=0;i<10;i++)
if(keychar.equals(z[i]))

if(yy<y[i])
yy = y[i] ;
j = i ;



if(j!=-1)
z[j] = new String(""+(char)(Math.random()*25+65)) ;
y[j] = 0 ;

sum += 1 ;

else
sum -= 1 ;



public void keyReleased(KeyEvent e)
// TODO: Add your code here
参考技术B 有什么需求吗?要做什么类型的游戏?

以上是关于跪求JAVA编写的小游戏源代码的主要内容,如果未能解决你的问题,请参考以下文章

java用啥软件编写代码

怎么用java编写echarts代码

如何使用java编写大型网页游戏 说下过程 网页游戏用啥编写比较好

ueditor怎么编写java代码

求用JAVA编写俄罗斯方块游戏的源代码

用java编写一个倒计时器代码。