毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 课程设计 >> 正文

java吃豆子游戏设计 第5页

更新时间:2008-11-25:  来源:毕业论文

java吃豆子
import java.awt.*;

/**
 * 定义吃豆者的类
 */
public class Player{

 private int xPos;
 private int yPos;
 private int xVPos;
 private int yVPos;
 private int speed;
 private int direction;
 private Rectangle player;
 //吃豆者的张开角度
 private int mouthDegree;
 //吃豆者是否移动
 private boolean isMoving = true;
 //吃豆者的张、合情况
 private boolean mouthOpen, mouthClose;
 //是否可以上下左右移动
 private boolean canMoveUp, canMoveDown, canMoveLeft, canMoveRight;
 //游戏是否结束
 private boolean dead;

 /**
  **构造函数:初始化吃豆者的属性
  */
 public Player(){
  xPos = 210;
  yPos = 357;
  xVPos = xPos;
  yVPos = yPos;
  direction = 2;
  //构造一个新的 Rectangle,其左上角被指定为(xPos - 10, yPos - 5),而其宽度和高度为(11,11)。
  player = new Rectangle(xPos - 10, yPos - 5, 11, 11);
  //吃豆者的初始张开角度为30度
  mouthDegree = 30;
  //初始张合状态:张开
  mouthOpen = true;
  speed = 2;
 }

 public void draw(Graphics g){
  int DirectionAngle = 180;
  g.setColor(Color.yellow);
  if(direction == 0)
   DirectionAngle = 90;
  if(direction == 1)
   DirectionAngle = -90;
  if(direction == 2)
   DirectionAngle = 180;
  if(direction == 3)
   DirectionAngle = 0;
  if(dead)
   DirectionAngle = 90;

  //填充覆盖指定矩形的圆弧或椭圆弧。
  //得到的弧由(mouthDegree + DirectionAngle)并跨越(180 - mouthDegree)角度。
  //弧的中心是矩形的中心,此矩形的原点为 (xPos - 10, yPos - 10),大小为(21, 21)
  g.fillArc(xPos - 10, yPos - 10, 21, 21, mouthDegree + DirectionAngle, 180 - mouthDegree);
  
  g.fillArc(xPos - 10, yPos - 10, 21, 21, 180 + DirectionAngle, 180 - mouthDegree);
 }

 public void move(Wall[] wall){
  
  isMoving = true;

  canMoveUp = true;
  canMoveDown = true;
  canMoveLeft = true;
  canMoveRight = true;

  if(!dead){
   if(mouthDegree == 70){
    mouthClose = true;
    mouthOpen = false;
   }
   if(mouthDegree == -10){
    mouthOpen = true;
    mouthClose = false;
   }
  }


  Rectangle R;
  
  // 构造一个新的 Rectangle,其左上角被指定为(xVPos - 10,yVPos - 12),而其宽度和高度为(21,21)。
  Rectangle UP = new Rectangle(xVPos - 10, yVPos - 12, 21, 21);
  Rectangle DOWN = new Rectangle(xVPos - 10, yVPos - 8, 21, 21);
  Rectangle LEFT = new Rectangle(xVPos - 12, yVPos - 10, 21, 21);
  Rectangle RIGHT = new Rectangle(xVPos - 8, yVPos - 10, 21, 21);

  for(int i = 0; i < wall.length; i++){
   
   R = new Rectangle(wall[i].getxPos() - 10, wall[i].getyPos() - 10, 21, 21);
   
   //确定此 Rectangle R是否与指定 Rectangle UP 相交。如果两个矩形的交集为非空,则它们是相交的。
   //如果R与UP相交,则返回 true;否则返回 false。
   if(R.intersects(UP))
    canMoveUp = false;
   if(R.intersects(UP) && direction == 0)
    yPos = yVPos;

   if(R.intersects(DOWN))
    canMoveDown = false;
   if(R.intersects(DOWN) && direction == 1)
    yPos = yVPos;

   if(R.intersects(LEFT))
    canMoveLeft = false;
   if(R.intersects(LEFT) && direction == 2)
    xPos = xVPos;

   if(R.intersects(RIGHT))
    canMoveRight = false;
   if(R.intersects(RIGHT) && direction == 3)
    xPos = xVPos;
  }

  //如果吃豆者可以移动,则新坐标位置=原坐标位置+速度
  if(direction == 0 && canMoveUp)
   yPos-=speed;
  else if(direction == 1 && canMoveDown)
   yPos+=speed;
  else if(direction == 2 && canMoveLeft)
   xPos-=speed;
  else if(direction == 3 && canMoveRight)
   xPos+=speed;
  //将吃豆者的移动状态设置成为:不能移动
  else
   isMoving = false;

  if(direction == 2 && xPos < 0)
   xPos = 420;
  if(direction == 3 && xPos > 420)
   xPos = 0;

  player = new Rectangle(xPos - 5, yPos - 5, 11, 11);

  int a = (xPos - 10)/21;
  int b = (xPos - 10)%21;
  if(b < 6)
   b = 0;
  if(b > 16)
   b = 21;
  if(b < 17 && b > 5)
   b = 11;
  xVPos = a*21 + b + 10;

  int c = (yPos - 10)/21;
  int d = (yPos - 10)%21;
  if(d < 6)
   d = 0;
  if(d > 16)
   d = 21;
  if(d < 17 && d > 5)
   d = 11;
  yVPos = c*21 + d + 10;

  int angularSpeed = 10;
  if(dead && mouthDegree <= 175){
   isMoving = true;
   mouthOpen = true;
   mouthClose = false;
   angularSpeed = 5;
  }

  if(dead && mouthDegree > 175){
   isMoving = false;
  }

  if(mouthOpen && isMoving){
   mouthDegree+=angularSpeed ;
  }
  
  if(mouthClose && isMoving){
   mouthDegree-=angularSpeed ;
  }

 }

 /**
  **方法:改变前进方向
  */
 public void ChangeDirection(int a){
  if(a == 0 && canMoveUp){
   direction = 0;
   xPos = xVPos;
  }
  if(a == 1 && canMoveDown){
   direction = 1;
   xPos = xVPos;
  }

  if(a == 2 && canMoveLeft){
   direction = 2;
   yPos = yVPos;
  }

  if(a == 3 && canMoveRight){
   direction = 3;
   yPos = yVPos;
  }
 }

 /**
  **返回值:int
  **方法:返回xPos
  */
 public int getxPos(){
  return xPos;
 }

 /**
  **返回值:int
  **方法:返回yPos
  */
 public int getyPos(){
  return yPos;
 }

 public Rectangle getBorder(){
  return player;
 }
 
 /**
  **方法:吃豆者停止运动
  */
 public void stop(){
  speed = 0;youerw.com
 }

 /**
  **方法:游戏结束,设置吃豆者的角度为30
  */
 }
}

上一页  [1] [2] [3] [4] [5] [6] [7] 下一页

java吃豆子游戏设计 第5页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。