貪吃蛇
成都創(chuàng)新互聯(lián)公司專注于企業(yè)營銷型網(wǎng)站建設(shè)、網(wǎng)站重做改版、龍游網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、H5開發(fā)、商城網(wǎng)站開發(fā)、集團公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站制作、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為龍游等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
import java.awt.*;
import java.awt.event.*;
public class GreedSnake //主類
{
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new MyWindow();
}
}
class MyPanel extends Panel implements KeyListener,Runnable//自定義面板類,繼承了鍵盤和線程接口
{
Button snake[]; //定義蛇按鈕
int shu=0; //蛇的節(jié)數(shù)
int food[]; //食物數(shù)組
boolean result=true; //判定結(jié)果是輸 還是贏
Thread thread; //定義線程
static int weix,weiy; //食物位置
boolean t=true; //判定游戲是否結(jié)束
int fangxiang=0; //蛇移動方向
int x=0,y=0; //蛇頭位置
MyPanel()
{
setLayout(null);
snake=new Button[20];
food=new int [20];
thread=new Thread(this);
for(int j=0;j20;j++)
{
food[j]=(int)(Math.random()*99);//定義20個隨機食物
}
weix=(int)(food[0]*0.1)*60; //十位*60為橫坐標(biāo)
weiy=(int)(food[0]%10)*40; //個位*40為縱坐標(biāo)
for(int i=0;i20;i++)
{
snake[i]=new Button();
}
add(snake[0]);
snake[0].setBackground(Color.black);
snake[0].addKeyListener(this); //為蛇頭添加鍵盤監(jiān)視器
snake[0].setBounds(0,0,10,10);
setBackground(Color.cyan);
}
public void run() //接收線程
{
while(t)
{
if(fangxiang==0)//向右
{
try
{
x+=10;
snake[0].setLocation(x, y);//設(shè)置蛇頭位置
if(x==weixy==weiy) //吃到食物
{
shu++;
weix=(int)(food[shu]*0.1)*60;
weiy=(int)(food[shu]%10)*40;
repaint(); //重繪下一個食物
add(snake[shu]); //增加蛇節(jié)數(shù)和位置
snake[shu].setBounds(snake[shu-1].getBounds());
}
thread.sleep(100); //睡眠100ms
}
catch(Exception e){}
}
else if(fangxiang==1)//向左
{
try
{
x-=10;
snake[0].setLocation(x, y);
if(x==weixy==weiy)
{
shu++;
weix=(int)(food[shu]*0.1)*60;
weiy=(int)(food[shu]%10)*40;
repaint();
add(snake[shu]);
snake[shu].setBounds(snake[shu-1].getBounds());
}
thread.sleep(100);
}
catch(Exception e){}
}
else if(fangxiang==2)//向上
{
try
{
y-=10;
snake[0].setLocation(x, y);
if(x==weixy==weiy)
{
shu++;
weix=(int)(food[shu]*0.1)*60;
weiy=(int)(food[shu]%10)*40;
repaint();
add(snake[shu]);
snake[shu].setBounds(snake[shu-1].getBounds());
}
thread.sleep(100);
}
catch(Exception e){}
}
else if(fangxiang==3)//向下
{
try
{
y+=10;
snake[0].setLocation(x, y);
if(x==weixy==weiy)
{
shu++;
weix=(int)(food[shu]*0.1)*60;
weiy=(int)(food[shu]%10)*40;
repaint();
add(snake[shu]);
snake[shu].setBounds(snake[shu-1].getBounds());
}
thread.sleep(100);
}
catch(Exception e){}
}
int num1=shu;
while(num11)//判斷是否咬自己的尾巴
{
if(snake[num1].getBounds().x==snake[0].getBounds().xsnake[num1].getBounds().y==snake[0].getBounds().y)
{
t=false;
result=false;
repaint();
}
num1--;
}
if(x0||x=this.getWidth()||y0||y=this.getHeight())//判斷是否撞墻
{
t=false;
result=false;
repaint();
}
int num=shu;
while(num0) //設(shè)置蛇節(jié)位置
{
snake[num].setBounds(snake[num-1].getBounds());
num--;
}
if(shu==15) //如果蛇節(jié)數(shù)等于15則勝利
{
t=false;
result=true;
repaint();
}
}
}
public void keyPressed(KeyEvent e) //按下鍵盤方向鍵
{
if(e.getKeyCode()==KeyEvent.VK_RIGHT)//右鍵
{
if(fangxiang!=1)//如果先前方向不為左
fangxiang=0;
}
else if(e.getKeyCode()==KeyEvent.VK_LEFT)
{ if(fangxiang!=0)
fangxiang=1;
}
else if(e.getKeyCode()==KeyEvent.VK_UP)
{ if(fangxiang!=3)
fangxiang=2;
}
else if(e.getKeyCode()==KeyEvent.VK_DOWN)
{ if(fangxiang!=2)
fangxiang=3;
}
}
public void keyTyped(KeyEvent e)
{
}
public void keyReleased(KeyEvent e)
{
}
public void paint(Graphics g) //在面板上繪圖
{
int x1=this.getWidth()-1;
int y1=this.getHeight()-1;
g.setColor(Color.red);
g.fillOval(weix, weiy, 10, 10);//食物
g.drawRect(0, 0, x1, y1); //墻
if(t==falseresult==false)
g.drawString("GAME OVER!", 250, 200);//輸出游戲失敗
else if(t==falseresult==true)
g.drawString("YOU WIN!", 250, 200);//輸出游戲成功
}
}
class MyWindow extends Frame implements ActionListener//自定義窗口類
{
MyPanel my;
Button btn;
Panel panel;
MyWindow()
{
super("GreedSnake");
my=new MyPanel();
btn=new Button("begin");
panel=new Panel();
btn.addActionListener(this);
panel.add(new Label("begin后請按Tab鍵選定蛇"));
panel.add(btn);
panel.add(new Label("按上下左右鍵控制蛇行動"));
add(panel,BorderLayout.NORTH);
add(my,BorderLayout.CENTER);
setBounds(100,100,610,500);
setVisible(true);
validate();
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
}
public void actionPerformed(ActionEvent e)//按下begin按鈕
{
if(e.getSource()==btn)
{
try
{
my.thread.start(); //開始線程
my.validate();
}
catch(Exception ee){}
}
}
}
希望對你能有所幫助。
有。貪吃蛇自行編輯java代碼使其具有交互功能是可以的。實現(xiàn)貪吃蛇游戲基本功能,屏幕上隨機出現(xiàn)一個“食物”,稱為豆子。玩家能利用上下左右鍵控制“蛇”的移動,“蛇”吃到“豆子”后“蛇”身體加長一節(jié),得分增加,“蛇”碰到邊界或蛇頭與蛇身相撞,“蛇”死亡,游戲結(jié)束。
Java貪吃蛇技術(shù)選型一般需要考慮以下幾點:
開發(fā)平臺:需要選擇適用于Java語言的開發(fā)平臺,如Eclipse、IntelliJ IDEA等。
編程語言:需要選擇Java語言來開發(fā)貪吃蛇游戲。
框架和庫:可以使用Java中的Swing框架和AWT庫來開發(fā)圖形界面,并使用Java多線程編程技術(shù)來實現(xiàn)游戲的實時動態(tài)效果。
算法和數(shù)據(jù)結(jié)構(gòu):可以使用隊列或鏈表等數(shù)據(jù)結(jié)構(gòu)來存儲貪吃蛇的身體,并使用類似貪心算法的思想來決定貪吃蛇的下一步移動方向。
編碼風(fēng)格和規(guī)范:需要遵循Java的編碼風(fēng)格和規(guī)范,確保代碼的可讀性和可維護性。
希望以上內(nèi)容能夠幫助您了解Java貪吃蛇技術(shù)選型。如果您有其他問題,歡迎隨時告訴我,我會盡力為您解答。
你要是 不想下eclipse,就進入bin目錄運行java TestCardType看能否運行(看名字估計main方法在那里面)。
如果你想研究代碼,用eclipse,菜單上的new--project...選project from existing source,然后選擇這個程序目錄,就導(dǎo)入了,然后點eclipse上的那個運行按鈕就行了。
本文題目:貪吃蛇java代碼怎么玩 貪吃蛇java代碼完整版
標(biāo)題鏈接:http://muchs.cn/article38/doecdsp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、軟件開發(fā)、企業(yè)建站、建站公司、網(wǎng)站策劃、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)