超级玛丽游戏
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
/**
*
*Author:杨伟
*
*Date:2016.5.27
*
*Function:超级玛丽游戏
*
*/
package com.practices;
import java.util.Scanner;
publicclass SuperMaria {
/**
*@param args
*/
publicstaticvoid main(String[] args) {
// TODO Auto-generated method stub
char ch;
int width,height;
System.out.println("请设置游戏界面宽和高:");
Scanner in = new Scanner(System.in);
width = in.nextInt();
height = in.nextInt();
Maria maria = new Maria();
maria.setXY(width, height);//设置马里奥的出场位置
Window win = new Window();
win.setWH(width,height);
win.show(maria);//显示初始游戏界面
System.out.println("**********开始游戏**********");
System.out.println("[w]--上\t[s]--下\t[a]--左\t[d]--右");
do{
String str = in.next();
ch = str.charAt(0);
switch(ch){
case'w': maria.move(0); //上
win.show(maria);
break;
case's': maria.move(1); //下
win.show(maria);
break;
case'a': maria.move(2); //左
win.show(maria);
break;
case'd': maria.move(3); //右
win.show(maria);
break;
}
System.out.println("[w]--上\t[s]--下\t[a]--左\t[d]--右");
}while(ch!='#');
System.out.println("***************游戏结束
***************");
}
}
class Window{
privateint width;//游戏窗口宽度和高度
privateint height;
publicvoid setWH(int width,int height) {
this.width = width;
this.height = height;
}
publicint getWidth() {
return width;
}
publicint getHeight() {
return height;
}
publicvoid show(Maria m){//显示游戏界面
// System.out.println(m.getX());
// System.out.println(m.getY());
for(int i=1;i<=width;i++){
for(int j=1;j<=height;j++){
if(j==m.getX()&&i==m.getY()){
System.out.print("@ ");
}else{
System.out.print("- ");
}
}
System.out.println();
}
}
}
class Maria{
privateint x;//Maria的位置
privateint y;
privateint wighttmp;
privateint heighttmp;
publicvoid setXY(int x,int y){
this.x = x/4;
this.y = y;
this.wighttmp = x;
this.heighttmp = y;
}
publicint getX() {
return x;
}
publicint getY() {
return y;
}
publicvoid move(int direction){
switch(direction){
case 0: this.y -= 1;//上
//限制出上边界
if(this.y<=1) this.y = 1;
break;
case 1: //限制出下边界
if(this.y<heighttmp)
this.y += 1;//下
break;
case 2: //限制出左边界
if(this.x>1) this.x -= 1;//左
break;
case 3: //到达右边界后,再回到左边界
this.x = (this.x)%wighttmp+1;//右
break;
}
}
}。