如何製作電腦簡易命令小遊戲 匿名使用者 1級 2019-01-20 回答

簡單的Dos小遊戲

開始學習java,這周只簡單的學習了C++的基本語法:輸入輸出,判斷迴圈,因此用這些東西在java上瞎寫了一個DOS小遊戲。

import java。util。*;

public class Demo {

static int A=0,D=0,H=10,MONEY=0;

static int a1=1,d1=1,h1=5,lv1;

static String receive;//用來接收指令

public static void main(String[] args){

sop(“輸入star開始遊戲”);

receive=in();//呼叫命令列輸入方法

if(receive。equals(“star”)){

star(“”);

}else{

sop(“error:”+receive);

}

}

public static void star(String flag){//開始1

sop(“輸入1,2,3中的一個值領取物品”);

flag=in();

if(flag。equals(“1”)){

A+=4;

D++;

show();

}else if(flag。equals(“2”)){

A+=3;

D+=2;

show();

}else{

MONEY+=50;

show();

}

star2(“”);

}

public static void star2(String flag){//開始2

sop(“輸入f/S決定去戰鬥/商店”);

flag=in();

if(flag。equals(“f”)){

f(“”);

}else if(flag。equals(“s”)){

s(“”);

}else{

star2(“”);

}

}

public static void f(String flag){//戰鬥

//int key=0;

a1=1;//初始化bot

d1=1;

h1=5;

lv1=1;

do{

sop(“當前戰鬥等級為:”+lv1);

a1=2*lv1;

d1=2*lv1;

h1=5*lv1;

sop(“bot為:”);

showbot();

sop(“是否開始戰鬥?y/n”);

flag=in();

if(flag。equals(“y”)){//輸入y,繼續

H=fight(H);//進入fight模式

if(H>0){//判斷H

MONEY+=5*lv1;

lv1++;

sop(“win”);

show();

}else{

over();

}

}else{//輸入其他,退回到satr2

star2(“”);

}

if(lv1==9){

boss(“”);

}

sop(“繼續?\ny/n”);

flag=in();

}while(flag。equals(“y”));

star2(“”);

}

public static void s(String flag){//商店

sop(“輸入1/2/3選擇攻擊/防禦/生命,任意鍵退出”);

flag=in();

if(flag。equals(“1”)&&MONEY>=10){

A++;

MONEY-=10;

show();

s(“”);

}else if(flag。equals(“2”)&&MONEY>=10){

D++;

MONEY-=10;

show();

s(“”);

}else if(flag。equals(“3”)&&MONEY>=10){

H+=10;

MONEY-=10;

show();

s(“”);

}else if(flag。equals(“pay”)){

sop(“這位土豪選擇了充錢,攻擊+10,防禦+5”);

A+=50;

D+=25;

show();

s(“”);

}else if(MONEY<10){

sop(“你的錢不夠”);

star2(“”);

}else{

star2(“”);

}

}

public static void boss(String flag){//BOSS

flag=in();

if(flag。equals(“y”)){

h1=100;

d1=30;

h1=500;

fight(H);

}else{

sop(“你被抓到了,GG”);

try{

Thread。sleep(1000);

}catch(Exception e){}

over();

}

if(H>0){

win();

}else{

over();

}

}

public static int fight(int H){//fight模式

while(true){

if(A<=d1){

sop(“你被一招秒了”);

try{

Thread。sleep(1000);

}catch(Exception e){}

over();

}

h1=h1-(A-d1);

sop(“你對bot造成了”+(A-d1)+“點傷害”);

try{

Thread。sleep(1000);

}catch(Exception e){}

if(h1<=0){

sop(“bot被打敗了”);

try{

Thread。sleep(1000);

}catch(Exception e){}

h1=5;

//return H;

break;

}

H=H-(a1-D);//???????????????????????????

sop(“bot對你造成了”+(a1-D)+“點傷害”);

try{

Thread。sleep(1000);

}catch(Exception e){}

if(H<=0){

sop(“你死了”);

try{

Thread。sleep(1000);

}catch(Exception e){}

over();

break;

}

}

return H;

}

public static void show(){//顯示自己數值

sop(“A值為:”+A+“\nD值為:”+D+“\nH值為:”+H+“\nMONEY:”+MONEY);

}

public static void showbot(){//顯示bot數值

sop(“A值為:”+a1+“\nD值為:”+d1+“\nH值為:”+h1);

}

public static String in(){//命令列輸入方法

Scanner sc=new Scanner(System。in);

String str=sc。next();

return str;

}

public static void sop(Object obj){//輸出語句方法

System。out。println(obj);

}

public static void over(){//失敗,結束

sop(“飲恨,遊戲結束”);

System。exit(0);

}

public static void win(){//勝利

sop(“通關!遊戲結束”);

System。exit(0);

}

}

很多地方都是憑感覺寫的,有些地方不會寫就百度了一下。最後寫完,發現如下問題:

1,沒有了解靜態和非靜態的區別,因此只寫了一個類,方法都是靜態的。

2,註釋????的地方想了很久,為什麼我的H值在每次戰鬥後又會被重置為10,後來發現只寫了fight(H),應該寫為H=fight(H)。

3,商店部分“你的錢不夠”語句有點小問題,不想改了。

4,剛開始沒有在每次戰鬥後初始化bot的生命值h1,導致在攻擊過高時,h1會變為負值的BUG,後來在每次bot被打敗後添加了一條:h1=5;。

5,剛開始沒有在win(),over()方法中新增System。exit(0);,導致死亡後還會繼續執行戰鬥方法的尷尬場面。

學習到的知識:

1,靜態方法只能呼叫靜態成員,因為靜態成員是隨著類的載入而載入的,此時非靜態成員可能還未載入,因此不能呼叫非靜態成員。非靜態方法例項化之後,可以被靜態成員呼叫。

2,問題2我想了很久,最後發現原來是自己忘記了成員變數和區域性變數的區別。figth(H)中的H是區域性變數和成員變數H不是一回事,區域性變數和成員變數可以同名,在使用時,區域性變數具有更高的優先順序,直接使用同名訪問時,訪問的是區域性變數,如果要訪問成員變數,可以用this。變數名訪問。(this的用法並不是很清楚)

如何製作電腦簡易命令小遊戲 歐派廚衛 1級 2019-01-21 回答

用javascript可以實現很多小遊戲。例如: http://down。51cto。com/zt/115這個網站裡有的。 這類百度上都是。