當前位置:編程學習大全網 - 源碼下載 - 網絡教程源代碼

網絡教程源代碼

導入Java . awt . borderlayout;

導入Java . awt . dimension;

導入Java . awt . toolkit;

導入javax . swing . jframe;

@SuppressWarnings("serial ")

公共類MainClass擴展JFrame {

ControlSnake控件;

工具包;

維度dimen

公共靜態void main(String[] args) {

新主類(“我的蛇”);

}

公共主類(字符串){

超級用戶;

control = new control snake();

control . setfocusable(true);

kit = toolkit . getdefaulttoolkit();

dimen = kit . getscreensize();

添加(控制);

set layout(new BorderLayout());

setLocation(dimen.width / 3,dimen . height/3);//dimen.width/3,dimen.height/3

setSize(FWIDTH,FH height);

setDefaultCloseOperation(JFrame。EXIT _ ON _ CLOSE);

setResizable(false);

set visible(true);

}

public static final int FWIDTH = 315;

公共靜態最終int FHEIGHT = 380

}

導入Java . awt . color;

導入Java . awt . dimension;

導入Java . awt . graphics;

導入Java . awt . point;

導入Java . awt . event . action event;

導入Java . awt . event . action listener;

導入Java . awt . event . key adapter;

導入Java . awt . event . key event;

導入Java . util . ArrayList;

導入Java . util . random;

導入javax . swing . joptionpane;

導入javax . swing . jpanel;

導入javax . swing . timer;

@SuppressWarnings("serial ")

公共類控件Snake擴展JPanel實現ActionListener {

隨機rand

ArrayList & lt點& gtlist,listBody

字符串str,str 1;

靜態布爾鍵;

int x,y,dx,dy,fx,fy,flag

內部蛇身;

int速度;

公共控件Snake() {

蛇身= 1;

Str = "上下左右方向鍵控制P鍵暫停...";

Str1 = "當前長度為:"+snake body;

key = true

flag = 1;

速度= 700;

rand = new Random();

list = new ArrayList & lt點& gt();

listBody = new ArrayList & lt點& gt();

x = 5;

y = 5;

list.add(新點(x,y));

list body . add(list . get(0));

dx = 10;

dy = 0;

FX = rand . nextint(30)* 10+5;// 2

fy = rand . nextint(30)* 10+5;// 2

setBackground(顏色。黑色);

setSize(新維度(318,380));

最終計時器時間=新計時器(速度,這個);

time . start();

addkey listener(new key adapter(){

公共void按鍵(按鍵事件e) {

if (e.getKeyCode() == 37) {

dx =-10;

dy = 0;

} else if (e.getKeyCode() == 38) {

dx = 0;

dy =-10;

} else if (e.getKeyCode() == 39) {

dx = 10;

dy = 0;

} else if (e.getKeyCode() == 40) {

dx = 0;

dy = 10;

} else if (e.getKeyCode() == 80) {

if (flag % 2 == 1) {

time . stop();

}

if(標誌% 2 == 0) {

time . start();

}

flag++;

}

}

});

}

公共空白油漆(圖形g) {

g.setColor(顏色。白色);

g.fillRect(0,0,400,400);

g.setColor(顏色。深灰);

g .畫線(3,3,305,3);

g .拉線(3,3,3,305);

g .拉線(305,3,305,305);

g .拉線(3,305,305,305);

g.setColor(顏色。粉色);

for(int I = 0;我& ltlist body . size();i++) {

g.fillRect(listBody.get(i))。x,listBody.get(i)。y,9,9);

}

g.fillRect(x,y,9,9);

g.setColor(顏色。橙色);

g.fillRect(fx,fy,9,9);

g.setColor(顏色。深灰);

Str1 = "當前長度為:"+snake body;

g .抽繩(str,10,320);

g .拉帶(str1,10,335);

}

public void action performed(action event e){

x+= dx;

y+= dy;

if (makeOut() == false) {

Joptionpane。顯示消息對話框(空,“重新開始...”);

速度= 700;

蛇身= 1;

x = 5;

y = 5;

list . clear();

list.add(新點(x,y));

list body . clear();

list body . add(list . get(0));

dx = 10;

dy = 0;

}

addPoint(x,y);

if(x = = FX & amp;& ampy == fy) {

速度= (int)(速度* 0.8);//速度增加參數

如果(速度& lt200) {

速度= 100;

}

FX = rand . nextint(30)* 10+5;// 2

fy = rand . nextint(30)* 10+5;// 2

snake body++;// 2

} // 2

repaint();

}

公共void添加點(int xx,int yy) {

//動態記錄最近50步內移動的坐標。

//並畫出最新的蛇身。

if(list . size()& lt;100) {//蛇身最長長度為100。

list.add(新點(xx,YY));

}否則{

list . remove(0);

list.add(新點(xx,YY));

}

if (snakeBody == 1) {

list body . remove(0);

listBody.add(0,list . get(list . size()-1));

}否則{

list body . clear();

if(list . size()& lt;蛇身){

for(int I = list . size()-1;我& gt0;我- ) {

list body . add(list . get(I));

}

}否則{

for(int I = list . size()-1;list body . size()& lt;蛇身;我- ) {

list body . add(list . get(I));

}

}

}

}

公共布爾makeOut() {

如果((x & lt3 | | y & lt3)| |(x & gt;305 | | y & gt305)) {

返回false

}

for(int I = 0;我& ltlist body . size()-1;i++) {

for(int j = I+1;j & ltlist body . size();j++) {

if (listBody.get(i)。equals(listBody.get(j))) {

返回false

}

}

}

返回true

}

}

/*蛇代碼*/

  • 上一篇:制作平面廣告需要知道用哪些軟件?
  • 下一篇:delphi stringgrid 某單元格字體顏色
  • copyright 2024編程學習大全網