最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Java坦克大戰(zhàn)部分:畫(huà)出界面,敵人坦克,我的坦克,不出界,鍵盤(pán)事件【詩(shī)書(shū)畫(huà)唱】

2020-07-30 23:18 作者:詩(shī)書(shū)畫(huà)唱  | 我要投稿

本文含很多自己寫(xiě)的個(gè)人理解和注釋?zhuān)氤龅慕鉀Q方法,建議內(nèi)容,提示內(nèi)容,注意事項(xiàng)。

package tankeGame;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;


import javax.swing.*;


import java.util.*;

//這個(gè)來(lái)做繪制內(nèi)容,發(fā)射子彈一類(lèi)的操作

//讓這個(gè)類(lèi)實(shí)現(xiàn)鍵盤(pán)點(diǎn)擊的接口


public class caoZuoPaintFangFaDiaoYong extends?

JPanel implements KeyListener {


//在構(gòu)造法方法里實(shí)例化我方坦克

// arraylist:存儲(chǔ)任意類(lèi)型,內(nèi)容長(zhǎng)度任意,有下標(biāo)

Vector<diRentanke> diRentankeJiHe=new Vector<diRentanke>();

mytankeYiDongFangFa mytankeYiDongFangFa=null;

public caoZuoPaintFangFaDiaoYong(){


// 個(gè)人理解:mytankeYiDongFangFa類(lèi)的這個(gè)構(gòu)造方法

// mytankeYiDongFangFa(int x, int y,?

// int fangxiang)中用了super(x, y, fangxiang);(因?yàn)樽宇?lèi)

// 繼承了父類(lèi)的mytankeYiDongFangFa(int x, int y,?

// int fangxiang)方法,所以子類(lèi)中用

// super(x, y, fangxiang)代替

// 父類(lèi)中這個(gè)構(gòu)造方法中的具體方法內(nèi)容

// ,就可以這里用了。

mytankeYiDongFangFa=new mytankeYiDongFangFa(150,440,0);

for(int i=0;i<5;i++){

// diRentanke類(lèi)中也有public diRentanke(int x, int y, int fangXiang)?

// 用來(lái)傳值的方法

// Random Random=new Random();

// int num=10+Random.nextInt (100);

// ,那么10<=num<10+100

diRentanke diRentanke=new diRentanke(100*i+90, 0, 2);



// 因?yàn)閿橙颂箍吮旧碛袑捀咚栽?100*i上要+90來(lái)調(diào)整

// x軸方向位置,不然就會(huì)第一量有部分看不見(jiàn),超出范圍。

diRentankeJiHe.add(diRentanke);

}

}

//繪制的方法

int fangXiang2=0;

//個(gè)人理解: “fangXiang2”為 “l(fā)eiXing”

// ,其實(shí)也可以統(tǒng)一把int類(lèi)型改成String的類(lèi)型,

// 然后再在swich判斷中傳入"left"之類(lèi)的,這樣代碼更明確

// ,容易懂等。放在paint方法前是為了,使用鍵盤(pán)事件后,

// fangXiang2改變,進(jìn)而用repaint來(lái)重新執(zhí)行一遍paint方法中內(nèi)容時(shí)

// huiZhitanke(g,mytankeYiDongFangFa.x,

// mytankeYiDongFangFa.y,0,fangXiang2)

// 中fangXiang2會(huì)改變,進(jìn)而用huiZhitanke方法,

// 在頁(yè)面顯示對(duì)應(yīng)方向的坦克圖形

// 來(lái)實(shí)現(xiàn)

// “坦克方向會(huì)變”的效果。這里的坦克是自己繪制的,

// 如果用圖片

// ,就是換加載的對(duì)應(yīng)方向的坦克圖片,

// huiZhitanke方法中的內(nèi)容進(jìn)行改變即可。




public void paint(Graphics g){

g.setColor(Color.black);

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

g.setColor(Color.green);


//開(kāi)始默認(rèn)用huiZhitanke方法在界面繪制向上的坦克:


huiZhitanke(g,mytankeYiDongFangFa.x,

mytankeYiDongFangFa.y,0,fangXiang2);

//遍歷剛才存入的5個(gè)敵方坦克

for(int i=0;i<diRentankeJiHe.size();i++){

diRentanke diRentanke=diRentankeJiHe.get(i);

huiZhitanke(g,diRentanke.x,diRentanke.y,

1,diRentanke.fangxiang);

}

}

//封裝坦克的方法:

// 1.畫(huà)筆? ?2.x? 3.y? 4.坦克的類(lèi)型? 5.坦克的方向

public void huiZhitanke(Graphics g,int x,int y,

int leiXing,int fangXiang){

//在這個(gè)方法里既可以繪制我方坦克,也可以繪制

//敵方tank,tank的類(lèi)型就是判斷是繪制什么顏色的坦克

switch(leiXing){

case 0:

//畫(huà)我方坦克:

g.setColor(Color.green);break;

case 1:

g.setColor(Color.yellow);break;

}

switch(fangXiang){

// 根據(jù)fangXiang值(的不同),

// 畫(huà)出對(duì)應(yīng)的fangXiang值(的不同方向)的坦克

case 0://向上坦克圖形:

g.fillRect(x, y, 10,30);

g.fillRect(x+10, y-10, 10,30);

g.fillRect(x+20, y, 10,30);

break;

case 1://向右坦克圖形:

g.fillRect(x, y, 30,10);

g.fillRect(x+10, y+10, 30,10);

g.fillRect(x, y+20, 30,10);

break;

case 2://向下坦克圖形:

g.fillRect(x, y, 10,30);

g.fillRect(x-10, y+10, 10,30);

g.fillRect(x-20, y, 10,30);

break;

case 3://向左坦克圖形:

g.fillRect(x, y, 30,10);

g.fillRect(x-10, y+10, 30,10);

g.fillRect(x, y+20, 30,10);

break;

}



}

@Override

public void keyTyped(KeyEvent e) {

// TODO Auto-generated method stub


}

@Override

//鍵盤(pán)按下的事件

public void keyPressed(KeyEvent e) {

//點(diǎn)擊W鍵

if(e.getKeyCode()==KeyEvent.VK_W){

// Graphics g = null;

// huiZhitanke(g,mytankeYiDongFangFa.x,

// mytankeYiDongFangFa.y,0,0);

// switch(0);

fangXiang2=0;

mytankeYiDongFangFa.yiDongFangFa(0);


}

if(e.getKeyCode()==KeyEvent.VK_S){

// Graphics g = null;

// huiZhitanke(g,mytankeYiDongFangFa.x,

// mytankeYiDongFangFa.y,0,1);

fangXiang2=2;

mytankeYiDongFangFa.yiDongFangFa(2);


}

if(e.getKeyCode()==KeyEvent.VK_A){

fangXiang2=3;

mytankeYiDongFangFa.yiDongFangFa(3);

}

if(e.getKeyCode()==KeyEvent.VK_D){

fangXiang2=1;

mytankeYiDongFangFa.yiDongFangFa(1);

}

this.repaint();

}

@Override

public void keyReleased(KeyEvent e) {

// TODO Auto-generated method stub


}

}



package tankeGame;


public class diRentanke extends tankeFuLei{

//敵方坦克類(lèi)也是繼承坦克父類(lèi)

public diRentanke(int x, int y, int fangXiang) {

super(x, y, fangXiang);

}


}

package tankeGame;

import javax.swing.*;

public class mains extends JFrame{

public static void main(String[] args) {

new mains();

}

public? mains(){

this.setLayout(null);

this.setSize(600,600);

this.setLocationRelativeTo(null);

caoZuoPaintFangFaDiaoYong caoZuo=new caoZuoPaintFangFaDiaoYong();

caoZuo.setBounds(0,0,600,600);

this.addKeyListener(caoZuo);

this.add(caoZuo);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

}

}

package tankeGame;


public class mytankeYiDongFangFa extends tankeFuLei{

//我方坦克類(lèi)繼承坦克父類(lèi)

public mytankeYiDongFangFa(int x, int y, int fangXiang) {

super(x, y, fangXiang);

}

//點(diǎn)擊移動(dòng)的方法

public void yiDongFangFa(int fangxiang){

// if(x<=600&&y<=600){

switch(fangxiang){

//判斷這個(gè)方向,方向是誰(shuí)就移動(dòng)誰(shuí)



case 0:

if(y>=10){

this.y-=this.suDu;}break;

// 個(gè)人理解:

// 如果“}”把break包住,y>=10時(shí)

// ,就會(huì)執(zhí)行case 1的情況,會(huì)向右移動(dòng)

// x<=550等也類(lèi)似

// 550等數(shù)值是在頁(yè)面寬600,長(zhǎng)600或

// 最初始位置(0,0)數(shù)值上調(diào)整得來(lái)的(加或減坦克的寬或長(zhǎng)),因?yàn)?/p>

// 坦克存在寬和長(zhǎng),所以要調(diào)整數(shù)值等,別的地方也是依次類(lèi)推。

case 1:

if(x<=550){

this.x+=this.suDu;}break;

case 2:

if(y<=520){

this.y+=this.suDu;}break;

case 3:if(x>=10){

this.x-=this.suDu;}break;

}

// }

}

}


package tankeGame;

//x,y

public class tankeFuLei {//父類(lèi)

//x軸,y軸,方向,速度,生命

int x,y,fangxiang;

int suDu=15;//坦克默認(rèn)移動(dòng)的速度為15px

boolean shengMing=true;//每個(gè)坦克默認(rèn)都是存在的

public tankeFuLei(int x,int y,int fangXiang){

this.x=x;

this.y=y;

this.fangxiang=fangXiang;

}

}

?


Java坦克大戰(zhàn)部分:畫(huà)出界面,敵人坦克,我的坦克,不出界,鍵盤(pán)事件【詩(shī)書(shū)畫(huà)唱】的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
扶风县| 顺昌县| 桃江县| 称多县| 通海县| 杭锦后旗| 鲁山县| 合川市| 剑河县| 长武县| 南开区| 梅河口市| 大名县| 海门市| 鄄城县| 潮安县| 钟山县| 七台河市| 渭源县| 灵石县| 晋城| 金秀| 长垣县| 桂东县| 浠水县| 武功县| 即墨市| 乐陵市| 德江县| 彝良县| 韶山市| 姜堰市| 鹤庆县| 南丰县| 仲巴县| 安乡县| 隆昌县| 肇源县| 吉林市| 靖远县| 德安县|