public static void main(String[] args) {
創(chuàng)新互聯(lián)長(zhǎng)期為上千多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為烏什企業(yè)提供專業(yè)的做網(wǎng)站、成都網(wǎng)站制作,烏什網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
int[] indexs = new int[15];
int[] tourists = new int[30];
for (int i = 0; i tourists.length; i++) {
tourists[i] = 1;
}
// 30,9,15
for (int i = 0, j = 1, n = 0; n 15; i++) {
if (j == 9 tourists[i] != 0) {
tourists[i] = 0;// 將游客標(biāo)記為下海
indexs[n] = i + 1;// 記錄游客位置
n++;// 記錄下海游客數(shù)量
j = 1;// 重開(kāi)始計(jì)數(shù)
}
if (tourists[i] != 0) {// 如果數(shù)到的游客未被標(biāo)記為下海,就計(jì)數(shù)
j++;
}
if (i == tourists.length - 1) {// 到達(dá)游客數(shù)組末尾,再?gòu)念^開(kāi)始。
i = -1;
}
}
System.out.println("被扔下大海的位置:");
for (int i = 0; i indexs.length; i++) {
System.out.print(indexs[i]+",");
}
}
思路?
可以把船寫成一個(gè)類,儲(chǔ)存坐標(biāo)、方向和長(zhǎng)度,坐標(biāo)不是在屏幕上顯示的位置,而是根據(jù)你的面板網(wǎng)格劃分的位置,不過(guò)習(xí)慣上最好還是從左上角作為原點(diǎn)來(lái)數(shù)(畢竟java里所有的窗口面板和圖形都是這樣的)。
布局面板兩個(gè),一個(gè)你的一個(gè)別人的,在布局面板里添加擺放船的方法(比方說(shuō)一個(gè)按鈕,按下之后就在面板里添加一個(gè)小船,如果你的小船已經(jīng)是從JComponent類里繼承過(guò)來(lái)的,可以直接添加MouseMotionListener,拖動(dòng)鼠標(biāo)改變位置),擺放好了之后確認(rèn)一下把船占據(jù)的所有格子的坐標(biāo)都記錄下來(lái)。
顯示面板一個(gè),最好自己新建一個(gè)類繼承JPanel類,方便繪圖,只要畫(huà)網(wǎng)格就行了,其他什么都不用畫(huà)出來(lái),反正誰(shuí)都看不見(jiàn),自己布的局自己記住就好啦!在這里只需要記錄目標(biāo)坐標(biāo)(就是對(duì)方的船在的位置)就行了,然后添加MouseListener判斷點(diǎn)擊位置,繪制不同的圖像來(lái)表示是否擊中。最后別忘了每一次點(diǎn)擊后都要換一個(gè)判斷對(duì)象(玩家)就行了
import?java.util.ArrayList;
import?java.util.List;
public?class?KillThree?{
public?static?void?main(String[]?args)?{
int?m?=?(args==null?||?args.length??1)?5:Integer.parseInt(args[0]);
int?n?=?(args==null?||?args.length??2)?100:Integer.parseInt(args[1]);
ListInteger?peoples?=?new?ArrayList();
for?(int?i?=?0;?i??n;?i++)?{
peoples.add(i+1);
}
int?mod?=?1;
while?(peoples.size()??m){
int?latestMod?=?peoples.size()%3;
for?(int?i?=?0;?i??peoples.size()??peoples.size()??m;?i++)?{
if((i+mod)%3==0){
peoples.remove(i);
}
}
mod?=?1?+?latestMod;
}
for?(int?i?=?0;?i??peoples.size();?i++)?{
System.out.print(peoples.get(i)?+?",");
}
}
}
沒(méi)有看明白是A擊中B后,是A移除數(shù)據(jù)還是B移除,2種情況都寫了,個(gè)人感覺(jué)隨機(jī)數(shù)這塊需要更好的算法處理下,代碼如下:
package?t;
import?java.util.ArrayList;
import?java.util.Random;
/**
*?海盜船的游戲:創(chuàng)建兩個(gè)數(shù)組,每個(gè)數(shù)組大小都5,數(shù)組里面都存INT值,1-10之間的數(shù)字。
*?隨機(jī)生成。哪果A向B發(fā)射炮彈,讀一個(gè)隨機(jī)數(shù),是否在在B中存,若存在則B中彈。
*?則移除相應(yīng)的數(shù)據(jù)。哪一個(gè)先被移除三個(gè)數(shù)字,則為輸。
*?@author?hyc
*
*/
public?class?Test?{
static?boolean?isLog?=?true;
public?static?void?main(String[]?args)?{
isLog?=false;
for?(int?i?=?0;?i??100;?i++)?{
AToB(5,?10,?3);
}
}
public?static?void?print(String?str){
if?(isLog)?{
System.out.println(str);
}
}
/**
*?@param?len?彈數(shù)
*?@param?max????最大隨機(jī)范圍
*?@param?dieNum????最大中彈數(shù)
*?@return
*/
public?static?void?AToB(int?len,int?max,int?dieNum){
ArrayListInteger?a?=?new?ArrayListInteger(5);
ArrayListInteger?b?=?new?ArrayListInteger(5);
Random?random?=?new?Random(System.currentTimeMillis());
for?(int?i?=?0;?i??len;?i++)?{
a.add(random.nextInt(max));
b.add(random.nextInt(max));
}
print("A:"+a);
print("B:"+b);
int?d_a?=?0;?//a中彈次數(shù)
int?d_b?=?0;//?b中彈次數(shù)
for?(int?i?=?0;?i??len*2;?i++)?{
if?(d_a?=dieNum)?{
System.out.println("A輸了");
return;
}
if?(d_b?=dieNum)?{
System.out.println("B輸了");
return;
}
if?(i%2==0)?{
print(i+"--:"+"A向B發(fā)射炮彈");
int?index?=?random.nextInt(a.size());
Integer?value?=?a.get(index);
print(i+"--:"+"A炮彈索引:"+index+",炮彈值:"+value);
if?(b.contains(value))?{
d_b++;
a.remove(index);//B中彈A移除數(shù)據(jù)
//????????????????????b.remove(value);//B中彈B移除數(shù)據(jù)
print(i+"--:"+"A的炮彈命中B"+d_b+"次......");
}else?{
print(i+"--:"+"A的炮彈未命中B");
}
}else?{
print(i+"--:"+"B向A發(fā)射炮彈");
int?index?=?random.nextInt(b.size());
Integer?value?=?b.get(index);
print(i+"--:"+"B炮彈索引:"+index+",炮彈值:"+value);
if?(a.contains(value))?{
d_a++;
b.remove(index);//A中彈B移除數(shù)據(jù)
//????????????????????a.remove(value);//A中彈A移除數(shù)據(jù)
print(i+"--:"+"B的炮彈命中A"+d_a+"次......");
}else?{
print(i+"--:"+"B的炮彈未命中A");
}
}
}
System.out.println("A和B打成了平手......");
}
public?static?boolean?launch(int?index,ArrayListInteger?list1,ArrayListInteger?list2){
if?(list2.contains(list1.get(index)))?{
list1.remove(index);
return?true;
}else?{
return?false;
}
}
}