Java貪吃蛇技術(shù)選型一般需要考慮以下幾點(diǎn):
10多年的蠡縣網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營(yíng)銷型網(wǎng)站建設(shè)的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整蠡縣建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“蠡縣網(wǎng)站設(shè)計(jì)”,“蠡縣網(wǎng)站推廣”以來(lái),每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
開發(fā)平臺(tái):需要選擇適用于Java語(yǔ)言的開發(fā)平臺(tái),如Eclipse、IntelliJ IDEA等。
編程語(yǔ)言:需要選擇Java語(yǔ)言來(lái)開發(fā)貪吃蛇游戲。
框架和庫(kù):可以使用Java中的Swing框架和AWT庫(kù)來(lái)開發(fā)圖形界面,并使用Java多線程編程技術(shù)來(lái)實(shí)現(xiàn)游戲的實(shí)時(shí)動(dòng)態(tài)效果。
算法和數(shù)據(jù)結(jié)構(gòu):可以使用隊(duì)列或鏈表等數(shù)據(jù)結(jié)構(gòu)來(lái)存儲(chǔ)貪吃蛇的身體,并使用類似貪心算法的思想來(lái)決定貪吃蛇的下一步移動(dòng)方向。
編碼風(fēng)格和規(guī)范:需要遵循Java的編碼風(fēng)格和規(guī)范,確保代碼的可讀性和可維護(hù)性。
希望以上內(nèi)容能夠幫助您了解Java貪吃蛇技術(shù)選型。如果您有其他問題,歡迎隨時(shí)告訴我,我會(huì)盡力為您解答。
多機(jī)調(diào)度問題的Java實(shí)現(xiàn)(貪心算法)
具體問題描述以及C/C++實(shí)現(xiàn)參見網(wǎng)址
[java]?view?plain?copy?print?
import?java.util.ArrayList;??
import?java.util.Collections;??
import?java.util.LinkedList;??
import?java.util.List;??
/**?
*?多機(jī)調(diào)度問題--貪心算法?
*?@author?Lican?
*?
*/??
public?class?JobMachine?{??
public?static?class?JobNode?implements?Comparable{??
int?id;//作業(yè)的標(biāo)號(hào)??
int?time;//作業(yè)時(shí)間??
public?JobNode(int?id,int?time){??
this.id=id;??
this.time=time;??
}??
@Override??
public?int?compareTo(Object?x)?{//按時(shí)間從大到小排列??
int?times=((JobNode)x).time;??
if(timetimes)?return?-1;??
if(time==times)?return?0;??
return?1;??
}?????????
}??
public?static?class?MachineNode?implements?Comparable{??
int?id;//機(jī)器的標(biāo)號(hào)??
int?avail;//機(jī)器空閑的時(shí)間(即機(jī)器做完某一項(xiàng)工作的時(shí)間)??
public?MachineNode(int?id,int?avail){??
this.id=id;??
this.avail=avail;??
}??
@Override??
public?int?compareTo(Object?o)?{//升序排序,LinkedList的first為最小的??
int?xs=((MachineNode)o).avail;??
if(availxs)?return?-1;??
if(avail==xs)?return?0;??
return?1;??
}??
}??
public?static?int?greedy(int[]?a?,int?m){??
int?n=a.length-1;//a的下標(biāo)從1開始,所以n(作業(yè)的數(shù)目)=a.length-1??
int?sum=0;??
if(n=m){??
for(int?i=0;in;i++)??
sum+=a[i+1];??
System.out.println("為每個(gè)作業(yè)分別分配一臺(tái)機(jī)器");??
return?sum;??
}??
ListJobNode?d=new?ArrayListJobNode();//d保存所有的作業(yè)??
for(int?i=0;in;i++){//將所有的作業(yè)存入List中,每一項(xiàng)包含標(biāo)號(hào)和時(shí)間??
JobNode?jb=new?JobNode(i+1,a[i+1]);??
d.add(jb);??
}??
Collections.sort(d);//對(duì)作業(yè)的List進(jìn)行排序??
LinkedListMachineNode?h=new?LinkedListMachineNode();//h保存所有的機(jī)器??
for(int?i=1;i=m;i++){//將所有的機(jī)器存入LinkedList中??
MachineNode?x=new?MachineNode(i,0);//初始時(shí),每臺(tái)機(jī)器的空閑時(shí)間(完成上一個(gè)作業(yè)的時(shí)間)都為0??
h.add(x);??
}??
int?test=h.size();??
for(int?i=0;in;i++){??
Collections.sort(h);??
MachineNode?x=h.peek();??
System.out.println("將機(jī)器"+x.id+"從"+x.avail+"到"+(x.avail+d.get(i).time)+"的時(shí)間段分配給作業(yè)"+d.get(i).id);??
x.avail+=d.get(i).time;??
sum=x.avail;??
}??
return?sum;??
}??
public?static?void?main(String[]?args)?{??
int[]?a={0,2,14,4,16,6,5,3};??
int?m=3;??
int?sum=greedy(a,m);??
System.out.println("總時(shí)間為:"+sum);??
}??
}??
/**?
運(yùn)行結(jié)果:?
將機(jī)器1從0到16的時(shí)間段分配給作業(yè)4?
將機(jī)器2從0到14的時(shí)間段分配給作業(yè)2?
將機(jī)器3從0到6的時(shí)間段分配給作業(yè)5?
將機(jī)器3從6到11的時(shí)間段分配給作業(yè)6?
將機(jī)器3從11到15的時(shí)間段分配給作業(yè)3?
將機(jī)器2從14到17的時(shí)間段分配給作業(yè)7?
將機(jī)器3從15到17的時(shí)間段分配給作業(yè)1?
總時(shí)間為:17?
*/
public getMin{
public int MinNumber=0;
public int findMax(int[] a){
for(int i=0;ia.length;i++){
if(a[i]==0) return a[--i];
}
return a[a.length-1];
}
public boolean Compare(int a,int b){
public boolean flag=true;
if(ab) flag=flase;
return flag;
}
public int getMinNumber(int[] M,int Money){
int[] findM=new int[M.length];
int index=0;
for(int i=0;iM.length;i++){
boolean f = this.Compare(M[i],money)
if(f) findM[index++]=M[i];
}
int max = this.findMax(findM);
MinNumber++;
if((Money-max)!=0) {
getMinNumber(M,Money-max)
}
return MinNumber;
}
public int[] Start(){
System.out.println("請(qǐng)輸入查詢組數(shù)");
int group=System.in.read();
int[] M={1,2,5,10,20,50,100};
int[] Result = new Int[group];
int index=0;
while (group-- 0){
System.out.println("請(qǐng)輸入金額");
int money=System.in.read();
Result[index++] = getMinNumber(M,money);
MinNumber=0;
}
}
public void print(int[] MinNumber){
for(int i=0;iMinNumber.length.i++){
System.out.println(MinNumber[i]+" ");
}
}
}
public static void main(String[] args){
new getMin().print(new getMin().Start());
}
沒測(cè)試啊,有問題請(qǐng)勿噴,呵呵
public class test6 {
int a[] = { 1, 2, 3, 4, 5, 6, 7 };
int b[] = { 2, 1, 4, 3, 6, 5, 7 };
public static void main(String args[]) {
test6 test = new test6();
test.go();
}
public void go() {
if (smart(a, b))
System.out.println("n=" + n(a, b));
}
public boolean smart(int[] a, int[] b) {
int a_[] = array(a);
int b_[] = array(b);
if (a.length == b.length) {
for (int c = 0; c a.length; c++) {
if (a_[c] != b_[c]) {
System.out.println("cannot transform");
return false;
}
}
for (int c = 0; c a.length; c++)
System.out.print(a[c]+" ");
System.out.println();
for (int c = 0; c b.length; c++)
System.out.print(b[c]+" ");
System.out.println();
return true;
} else {
System.out.println("cannot transform");
return false;
}
}
public int[] array(int[] a) {
int[] z = new int[a.length];
for (int c = 0; c a.length; c++)
z[c] = a[c];
for (int c = 0; c z.length - 1; c++) {
for (int d = c + 1; d z.length; d++) {
if (z[c] z[d]) {
int x = z[c];
z[c] = z[d];
z[d] = x;
}
}
}
return z;
}
public int n(int[] a, int[] b) {
int c = 0;
for (int d = 0; d a.length; d++)
if (a[d] != b[d])
c += 5;
return (c + 8) / 10;
}
}