求一个简单又有趣的JAVA小游戏代码

求一个简单又有趣的JAVA小游戏代码,第1张

具体如下:

连连看的小源码

package Lianliankan

import javax.swing.*

import java.awt.*

import java.awt.event.*

public class lianliankan implements ActionListener

{

JFrame mainFrame//主面板

Container thisContainer

JPanel centerPanel,southPanel,northPanel//子面板

JButton diamondsButton[][] = new JButton[6][5]//游戏按钮数组

JButton exitButton,resetButton,newlyButton//退出,重列,重新开始按钮

JLabel fractionLable=new JLabel("0")//分数标签

JButton firstButton,secondButton//

分别记录两次62616964757a686964616fe59b9ee7ad9431333335326239被选中的按钮

int grid[][] = new int[8][7]//储存游戏按钮位置

static boolean pressInformation=false//判断是否有按钮被选中

int x0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateLV//游戏按钮的位置坐标

int i,j,k,n//消除方法控制

代码(code)是程序员用开发工具所支持的语言写出来的源文件,是一组由字符、符号或信号码元以离散形式表示信息的明确的规则体系。

对于字符和Unicode数据的位模式的定义,此模式代表特定字母、数字或符号(例如 0x20 代表一个空格,而 0x74 代表字符“t”)。一些数据类型每个字符使用一个字节;每个字节可以具有 256 个不同的位模式中的一个模式。

在计算机中,字符由不同的位模式(ON 或 OFF)表示。每个字节有 8 位,这 8 位可以有 256 种不同的 ON 和 OFF 组合模式。对于使用 1 个字节存储每个字符的程序,通过给每个位模式指派字符可表示最多 256 个不同的字符。2 个字节有 16 位,这 16 位可以有 65,536 种唯一的 ON 和 OFF 组合模式。使用 2 个字节表示每个字符的程序可表示最多 65,536 个字符。

单字节代码页是字符定义,这些字符映射到每个字节可能有的 256 种位模式中的每一种。代码页定义大小写字符、数字、符号以及 !、@、#、% 等特殊字符的位模式。每种欧洲语言(如德语和西班牙语)都有各自的单字节代码页。

虽然用于表示 A 到 Z 拉丁字母表字符的位模式在所有的代码页中都相同,但用于表示重音字符(如"é"和"á")的位模式在不同的代码页中却不同。如果在运行不同代码页的计算机间交换数据,必须将所有字符数据由发送计算机的代码页转换为接收计算机的代码页。如果源数据中的扩展字符在接收计算机的代码页中未定义,那么数据将丢失。

如果某个数据库为来自许多不同国家的客户端提供服务,则很难为该数据库选择这样一种代码页,使其包括所有客户端计算机所需的全部扩展字符。而且,在代码页间不停地转换需要花费大量的处理时间。

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=imgthis.x=xthis.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=xthis.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=0i<10i++){

enemy[i]=new Car(imgBlue, 0, 0)

}

for(int i=10i<enemy.lengthi++){

enemy[i]=new Car(imgGreen, 0, 0)

}

for(int i=0i<enemy.lengthi++){

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=0j<enemy.lengthj++){

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=0i<enemy.lengthi++){

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>

请楼主采纳

 public void mouseClicked(MouseEvent e){\x0d\x0aObject source=e.getSource() //获取事件源,即地鼠标签\x0d\x0aif(source instanceof JLabel){ //如果事件是标签组件\x0d\x0aJLabel mouse=(JLabel)source //强制转换为JLabel标签\x0d\x0amouse.setIcon(null) //取消标签图标\x0d\x0a}\x0d\x0a}\x0d\x0a})\x0d\x0athis.getContentPane().add(mouses[i]) //添加显示地鼠的标签到窗体\x0d\x0a}\x0d\x0a\x0d\x0amouses[0].setLocation(253, 300) //设置每个标签的位置\x0d\x0amouses[1].setLocation(333, 250)\x0d\x0amouses[2].setLocation(388, 296)\x0d\x0amouses[3].setLocation(362, 364)\x0d\x0amouses[4].setLocation(189, 353)\x0d\x0amouses[5].setLocation(240, 409)\x0d\x0a\x0d\x0afinal JLabel backLabel=new JLabel() //创建显示背景的标签\x0d\x0abackLabel.setBounds(0, 0, img.getIconWidth(), img.getIconHeight())\x0d\x0athis.setBounds(100,100,img.getIconWidth(),img.getIconHeight())\x0d\x0abackLabel.setIcon(img)//添加背景到标签\x0d\x0athis.getContentPane().add(backLabel) //添加背景标签到窗体\x0d\x0a}\x0d\x0a/**\x0d\x0a* 线程的核心方法\x0d\x0a*/\x0d\x0a\x0d\x0apublic void run(){\x0d\x0awhile(true){//使用无限循环\x0d\x0atry{\x0d\x0aThread.sleep(3000)//使线程休眠3秒\x0d\x0aint index=(int)(Math.random()*6) //生成随机的地鼠索引\x0d\x0aif(mouses[index].getIcon()==null){ //如果地鼠标签没有设置图片\x0d\x0amouses[index].setIcon(imgMouse) //为该标签添加地鼠图片\x0d\x0a}\x0d\x0a}catch(InterruptedException e){\x0d\x0ae.printStackTrace()\x0d\x0a}\x0d\x0a}\x0d\x0a}\x0d\x0a\x0d\x0a}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11315290.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存