贪食蛇源代码.docx

上传人:b****5 文档编号:11749089 上传时间:2023-03-31 格式:DOCX 页数:18 大小:17.87KB
下载 相关 举报
贪食蛇源代码.docx_第1页
第1页 / 共18页
贪食蛇源代码.docx_第2页
第2页 / 共18页
贪食蛇源代码.docx_第3页
第3页 / 共18页
贪食蛇源代码.docx_第4页
第4页 / 共18页
贪食蛇源代码.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

贪食蛇源代码.docx

《贪食蛇源代码.docx》由会员分享,可在线阅读,更多相关《贪食蛇源代码.docx(18页珍藏版)》请在冰豆网上搜索。

贪食蛇源代码.docx

贪食蛇源代码

packagegsf;

/**

*软件开发=框架+插入点

*本UI框架,第15次课,详细讲解,学员都能“自主”写出来!

*/

importjava.awt.*;

importjava.awt.event.*;

importjava.util.*;

importjavax.swing.*;

importjava.io.File;

importjava.io.IOException;

importjavax.sound.sampled.*;

publicclassGame

{

//TODO:

变量“声明”在下面

窗口ck=null;

定时器ds1=null;

inttouxiang=0;

int[][]pan;

inttoux;

inttouy;

intdoux;/*(0,n)随机数*/

intdouy;/*(0,n)随机数*/

int[]shenx;

int[]sheny;

booleanwin=false;

booleanlose=false;

booleandouc=false;

Game()

{

//TODO:

程序初始化在下面

pan=newint[22][22];

for(inti=0;i<22;i++){

pan[0][i]=4;

pan[i][0]=4;

pan[21][i]=4;

pan[i][21]=4;

}

pan[1][1]=2;

pan[1][2]=1;

toux=2;

touy=1;

shenx=newint[10];

sheny=newint[10];

for(inti=0;i<10;i++){

shenx[i]=0;

sheny[i]=0;

}

shenx[0]=1;

sheny[0]=1;

doux=1+newRandom().nextInt(20);/*(0,n)随机数*/

douy=1+newRandom().nextInt(20);/*(0,n)随机数*/

ck=new窗口();

//窗口宽+2*立体边,高+2*立体边+标题栏

ck.setSize(5*2+600,600+2*5+25);

//设定窗口可见性setVisibletrue/false

ck.setVisible(true);

//延时的毫秒

ds1=new定时器(200);

}

class窗口extendsJFrame

{

菜单cd=null;

面板mb=null;

窗口监听器exit=null;

键盘监听器jp=null;

窗口()

{

jp=new键盘监听器();

this.addKeyListener(jp);

mb=new面板();

this.add(mb);

exit=new窗口监听器();

this.addWindowListener(exit);

this.repaint();

}

class菜单extendsJMenuBar

{

JMenudan;//菜单

JMenuItemxiang1;//菜单项

菜单监听器cdjtq;

菜单()

{

dan=newJMenu("游戏");//菜单

xiang1=newJMenuItem("开局");//菜单项

this.add(dan);

dan.add(xiang1);

cdjtq=new菜单监听器();

xiang1.addActionListener(cdjtq);

}

class菜单监听器implementsActionListener

{

publicvoidactionPerformed(ActionEvente)

{

//TODO:

菜单事件处理

if(e.getSource()==xiang1)

{

}

}

}

}

class窗口监听器extendsWindowAdapter

{

publicvoidwindowClosing(WindowEvente)

{

ds1.xc.stop();

System.exit(0);

}

}

class键盘监听器implementsKeyListener

{

//TODO:

键盘按下,可加入KeyEvent.VK_XXX

publicvoidkeyPressed(KeyEvente)

{

switch(e.getKeyCode())

{

caseKeyEvent.VK_LEFT:

//左键

if(touxiang!

=0)

touxiang=2;

break;

caseKeyEvent.VK_RIGHT:

//右键

if(touxiang!

=2)

touxiang=0;

break;

caseKeyEvent.VK_UP:

//上键

if(touxiang!

=3)

touxiang=1;

break;

caseKeyEvent.VK_DOWN:

//下键

if(touxiang!

=1)

touxiang=3;

break;

caseKeyEvent.VK_1:

//大键盘数字1

break;

caseKeyEvent.VK_W:

//W键盘

break;

}

ck.repaint();

}

publicvoidkeyReleased(KeyEvente)

{

//TODO:

键盘释放,可加入KeyEvent.VK_XXX

switch(e.getKeyCode())

{

caseKeyEvent.VK_LEFT:

//左键

break;

caseKeyEvent.VK_RIGHT:

//右键

break;

caseKeyEvent.VK_UP:

//上键

break;

caseKeyEvent.VK_DOWN:

//下键

break;

caseKeyEvent.VK_1:

//大键盘数字1

break;

caseKeyEvent.VK_W:

//W键盘

break;

}

ck.repaint();

}

publicvoidkeyTyped(KeyEvente)

{

}

}

class面板extendsJPanel

{

鼠标监听器sb=null;

面板()

{

sb=new鼠标监听器();

this.addMouseListener(sb);

this.addMouseMotionListener(sb);

}

class鼠标监听器extendsMouseAdapterimplementsMouseMotionListener

{

publicvoidmousePressed(MouseEvente)

{

//mxmy鼠标的位置

intmx=e.getX();

intmy=e.getY();

//TODO:

鼠标按下在下面

ck.repaint();

}

publicvoidmouseDragged(MouseEvente)

{

//mxmy鼠标的位置

intmx=e.getX();

intmy=e.getY();

//TODO:

鼠标拖拽在下面

ck.repaint();

}

publicvoidmouseMoved(MouseEvente)

{

//mxmy鼠标的位置

intmx=e.getX();

intmy=e.getY();

//TODO:

鼠标移动在下面

ck.repaint();

}

publicvoidmouseReleased(MouseEvente)

{

//mxmy鼠标的位置

intmx=e.getX();

intmy=e.getY();

//TODO:

鼠标释放在下面

ck.repaint();

}

publicvoidmouseClicked(MouseEvente)//鼠标单击

{

}

}

publicvoidpaint(Graphicsg)

{

//命令提示:

//矩形jx

//椭圆ty

//实心矩形sxjx

//实心椭圆sxty

//图片tp

//g.setColor(Color.BLUE);//设定颜色:

REDGREENBLUEORANGE

//TODO:

绘图在下面

if(!

win&&!

lose){

Imagetu=(newImageIcon("贪吃蛇/背景.PNG")).getImage();

g.drawImage(tu,0,0,null);//绘制图片API

Imagetut=(newImageIcon("贪吃蛇/头"+touxiang+".PNG")).getImage();

g.drawImage(tut,toux*27,touy*27,null);

for(inth=0;h<22;h=h+1)//对于?

从?

循环到?

{

for(intl=0;l<22;l=l+1)//对于?

从?

循环到?

{

if(pan[h][l]==2){

Imagetus=(newImageIcon("贪吃蛇/身.PNG")).getImage();

g.drawImage(tus,l*27,h*27,null);//绘制图片API

}//if

elseif(pan[h][l]==4){

Imagetuq=(newImageIcon("贪吃蛇/墙.PNG")).getImage();

g.drawImage(tuq,l*27,h*27,null);

}//else

}//for

}//for

if(douc==true){

do{

doux=1+newRandom().nextInt(20);/*(0,n)随机数*/

douy=1+newRandom().nextInt(20);/*(0,n)随机数*/

}while(pan[douy][doux]!

=0);

douc=false;

}//if

Imagetud=(newImageIcon("贪吃蛇/豆.png")).getImage();

g.drawImage(tud,doux*27,douy*27,null);//绘制图片API

}//if

if(win){

Imagetu=(newImageIcon("贪吃蛇/背景.PNG")).getImage();

g.drawImage(tu,0,0,null);//绘制图片API

for(inth=0;h<22;h=h+1)//对于?

从?

循环到?

{

for(intl=0;l<22;l=l+1)//对于?

从?

循环到?

{

Imagetuq=(newImageIcon("贪吃蛇/墙.PNG")).getImage();

g.drawImage(tuq,l*27,h*27,null);

}

}

Imagetuy=(newImageIcon("贪吃蛇/ying.png")).getImage();

g.drawImage(tuy,100,100,null);//绘制图片API

}elseif(lose){

Imagetu=(newImageIcon("贪吃蛇/背景.PNG")).getImage();

g.drawImage(tu,0,0,null);//绘制图片API

for(inth=0;h<22;h=h+1)//对于?

从?

循环到?

{

for(intl=0;l<22;l=l+1)//对于?

从?

循环到?

{

Imagetuq=(newImageIcon("贪吃蛇/墙.PNG")).getImage();

g.drawImage(tuq,l*27,h*27,null);

}

}

Imagetul=(newImageIcon("贪吃蛇/gameover.png")).getImage();

g.drawImage(tul,200,200,null);//绘制图片API

}

}

}

}

class定时器implementsRunnable//实现Runnable接口

{

Threadxc=null;

longjianGe;

定时器(longjianGe)

{

this.jianGe=jianGe;

xc=newThread(this);

xc.start();

}

publicvoidrun()

{

while(!

win&&!

lose)

{

try

{

xc.sleep(jianGe);

if(this==ds1)

{

//TODO:

定时处理在下面

intcurrentx=0;

intcurrenty=0;

for(inti=0;i<10;i++){

if(shenx[i]!

=0){

currentx=shenx[i];

currenty=sheny[i];

}

elseif(shenx[i]==0)

break;

}

for(inti=9;i>=1;i--){

if(shenx[i]!

=0){

shenx[i]=shenx[i-1];

sheny[i]=sheny[i-1];

pan[sheny[i]][shenx[i]]=2;

}

}

if(touxiang==0){

toux+=1;

//if(shenx[1]==0){

//currentx=shenx[0];

//currenty=sheny[0];

//

//}

shenx[0]=toux-1;

sheny[0]=touy;

pan[sheny[0]][shenx[0]]=2;

}

elseif(touxiang==1){

touy-=1;

//if(shenx[1]==0){

//currentx=shenx[0];

//currenty=sheny[0];

//

//}

shenx[0]=toux;

sheny[0]=touy+1;

pan[sheny[0]][shenx[0]]=2;

}

elseif(touxiang==2){

toux-=1;

//if(shenx[1]==0){

//currentx=shenx[0];

//currenty=sheny[0];

//

//}

shenx[0]=toux+1;

sheny[0]=touy;

pan[sheny[0]][shenx[0]]=2;

}

elseif(touxiang==3){

touy+=1;

//if(shenx[1]==0){

//currentx=shenx[0];

//currenty=sheny[0];

//

//}

shenx[0]=toux;

sheny[0]=touy-1;

pan[sheny[0]][shenx[0]]=2;

}

//for(inti=1;i<10;i++){

//

//if(shenx[i]!

=0){

//currentx=shenx[i];

//currenty=sheny[i];

//shenx[i]=shenx[i-1];

//sheny[i]=sheny[i-1];

//pan[sheny[i]][shenx[i]]=2;

//}

//

//}

if(toux==doux&&touy==douy){

douc=true;

}

pan[currenty][currentx]=0;

if(douc==true){

for(inti=0;i<10;i++){

if(shenx[i]==0){

shenx[i]=shenx[i-1]-1;

sheny[i]=sheny[i-1];

break;

}

}

}

if(shenx[9]!

=0)

win=true;

if(pan[touy][toux]!

=0)

lose=true;

//for(inti=0;i<22;i++){

//if(pan[0][i]!

=4&&pan[i][0]!

=4&&pan[21][i]!

=4&&pan[i][21]!

=4)

//win=false;

//}

ck.repaint();

}

}

catch(InterruptedExceptione)

{

e.printStackTrace();

}

}

}

}

//main主方法,主类的“入口方法”

publicstaticvoidmain(String[]args)

{

newGame();

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 教育学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1