2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  標(biāo)題:智能終端課程設(shè)計(jì)</p><p>  2014年1月13日</p><p><b>  摘 要</b></p><p>  本次課程設(shè)計(jì)主要內(nèi)容是雙人五子棋游戲的開(kāi)發(fā)。主要內(nèi)容是界面布局、判斷輸贏,記錄輸贏次數(shù)。開(kāi)發(fā)想法來(lái)源,純屬娛樂(lè)。</p><p>  關(guān)鍵詞:益智游戲 Androi

2、d</p><p><b>  第一部分 分析游戲</b></p><p><b>  游戲功能簡(jiǎn)述</b></p><p><b>  界面布局</b></p><p>  按照象棋的表格圖案繪制布局,在畫(huà)布上設(shè)計(jì)表格,并標(biāo)記紅黑方位置。</p><p&g

3、t;<b>  棋子連線分析</b></p><p>  標(biāo)明五子棋的顏色,記錄分析棋子的位置,判斷是否取勝。</p><p><b>  記錄輸贏次數(shù)</b></p><p>  記錄紅黑雙方輸贏次數(shù)。</p><p><b>  二、游戲核心技術(shù)</b></p>

4、<p><b>  1、基本技術(shù)組成</b></p><p>  判斷路徑,數(shù)據(jù)結(jié)構(gòu)算法。</p><p>  2、關(guān)鍵技術(shù)難點(diǎn)分析</p><p><b>  1、技術(shù)難點(diǎn)</b></p><p>  分析棋子連線是否可以取勝。</p><p><b&g

5、t;  2、作為難點(diǎn)的原因</b></p><p>  棋子之間有三種連線情況,橫向連續(xù)連接、縱向連續(xù)連接、對(duì)角線連續(xù)連接。</p><p><b>  3、準(zhǔn)備突破方法</b></p><p>  將同類(lèi)棋子之間,有位置關(guān)系的棋子進(jìn)行進(jìn)棧處理,如果在棋盤(pán)范圍內(nèi),有連續(xù)的五個(gè)棋子則為取勝。</p><p> 

6、 第二部分 設(shè)計(jì)與開(kāi)發(fā)</p><p><b>  前期準(zhǔn)備工作</b></p><p><b>  軟件環(huán)境:</b></p><p><b>  Windows</b></p><p>  Android SDK;</p><p>  Eclipse

7、(windows版)</p><p><b>  環(huán)境配置:</b></p><p>  Windows下Android SDK安裝。</p><p><b>  安裝步驟:</b></p><p>  1、下載SDK包,Android-SDK,下載地址:</p><p> 

8、 http://developer.android.com/tools/sdk/ndk/index.html</p><p><b>  2、 配置SDK</b></p><p><b>  導(dǎo)入sdk文件</b></p><p><b>  游戲預(yù)期效果</b></p><p&

9、gt;<b>  UI設(shè)計(jì)</b></p><p>  背景畫(huà)布選擇恰當(dāng),布局清晰,結(jié)構(gòu)清晰,使用簡(jiǎn)單。</p><p><b>  棋盤(pán)設(shè)計(jì)</b></p><p>  方格大小,連線之間的距離適中,確保棋子在連線上,避免棋子在棋盤(pán)上混亂擺放。</p><p><b>  提示框<

10、/b></p><p>  出現(xiàn)下棋位置不在棋盤(pán)內(nèi)或者不在合法范圍內(nèi)是出現(xiàn)錯(cuò)誤提示</p><p>  當(dāng)由一方取得勝利時(shí),出現(xiàn)提示框。</p><p><b>  開(kāi)發(fā)過(guò)程</b></p><p><b>  1、布局設(shè)計(jì)</b></p><p>  package

11、cn.m.xys;</p><p>  //Download by http://www.codefans.net</p><p>  import android.app.Activity;</p><p>  import android.os.Bundle;</p><p>  import android.view.Display;&

12、lt;/p><p>  import android.view.KeyEvent;</p><p>  import android.view.Window;</p><p>  import android.view.WindowManager;</p><p>  public class FiveChessActivity extends

13、Activity </p><p><b>  {</b></p><p>  GameView gameView = null; </p><p><b>  @Override</b></p><p>  public void onCreate(Bundle savedInstanceS

14、tate) </p><p><b>  {</b></p><p>  super.onCreate(savedInstanceState);</p><p><b>  // 隱藏標(biāo)題欄</b></p><p>  requestWindowFeature(Window.FEATURE_NO_T

15、ITLE);</p><p><b>  // 全屏顯示</b></p><p>  getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,</p><p>  WindowManager.LayoutParams.FLAG_FULLSCREEN);</p>

16、<p><b>  // 獲取屏幕寬高</b></p><p>  Display display = getWindowManager().getDefaultDisplay();</p><p>  // 現(xiàn)實(shí)GameView</p><p>  GameView.init(this, display.getWidth(), d

17、isplay.getHeight());</p><p>  gameView = GameView.getInstance();</p><p>  setContentView(gameView);</p><p><b>  }</b></p><p><b>  @Override</b>&

18、lt;/p><p>  public boolean onKeyDown(int keyCode, KeyEvent event)</p><p><b>  {</b></p><p>  return super.onKeyDown(keyCode, event);</p><p><b>  } <

19、;/b></p><p><b>  }</b></p><p><b>  2、算法設(shè)計(jì)</b></p><p>  package cn.m.xys;</p><p>  //Download by http://www.codefans.net</p><p> 

20、 import android.app.Activity;</p><p>  import android.content.Context;</p><p>  import android.content.res.Resources;</p><p>  import android.graphics.Bitmap;</p><p>  

21、import android.graphics.BitmapFactory;</p><p>  import android.graphics.Canvas;</p><p>  import android.graphics.Color;</p><p>  import android.graphics.Matrix;</p><p>

22、  import android.graphics.Paint;</p><p>  import android.graphics.Rect;</p><p>  import android.view.MotionEvent;</p><p>  import android.view.SurfaceHolder;</p><p>  i

23、mport android.view.SurfaceView;</p><p><b>  /**</b></p><p>  * @author Administrator</p><p><b>  * </b></p><p><b>  */</b></p>

24、<p>  public class GameView extends SurfaceView implements Const, SurfaceHolder.Callback, Runnable</p><p><b>  {</b></p><p>  static GameView sInstance = null;</p><

25、p>  public static void init(Activity mActivity, int screenWidth, int screenHeight)</p><p><b>  {</b></p><p>  sInstance = new GameView(mActivity, screenWidth, screenHeight);</p

26、><p><b>  }</b></p><p>  public static GameView getInstance()</p><p><b>  {</b></p><p>  return sInstance;</p><p><b>  }</b&g

27、t;</p><p><b>  // 控制循環(huán)</b></p><p>  boolean mbLoop = false;</p><p>  // 定義SurfaceHolder對(duì)象</p><p>  SurfaceHolder mSurfaceHolder = null;</p><p>

28、  public static Paint sPaint = null;</p><p>  public static Canvas sCanvas = null;</p><p>  public static Resources sResources = null;</p><p>  private int mGameState = 0;</p>

29、<p>  private int mScreenWidth = 0;</p><p>  private int mScreenHeight = 0;</p><p>  public int[][] mGameMap = null;</p><p>  private int mMapHeightLengh = 0;</p><

30、p>  private int mMapWidthLengh = 0;</p><p>  private int mMapIndexX = 0;</p><p>  private int mMapIndexY = 0;</p><p>  public int mCampTurn = 0;</p><p>  public int

31、mCampWinner = 0;</p><p>  private float mTitleSpace = 0;</p><p>  private int mTitleHeight = 0;</p><p>  private float mTitleIndex_x = 0;</p><p>  private float mTitleI

32、ndex_y = 0;</p><p>  Bitmap bitmapBg = null;</p><p>  Bitmap mBlack = null;</p><p>  Bitmap mWhite = null;</p><p>  Context mContext = null;</p><p>  publi

33、c GameView(Activity activity, int screenWidth, int screenHeight)</p><p><b>  {</b></p><p>  super(activity);</p><p>  sPaint = new Paint();</p><p>  sPaint.

34、setAntiAlias(true);</p><p>  sResources = getResources();</p><p>  mContext = activity;</p><p>  mScreenWidth = screenWidth;</p><p>  mScreenHeight = screenHeight;</

35、p><p>  mSurfaceHolder = this.getHolder();</p><p>  mSurfaceHolder.addCallback(this);</p><p>  setFocusable(true);</p><p>  mbLoop = true;</p><p>  bitmapBg =

36、 CreatMatrixBitmap(R.drawable.status, mScreenWidth, mScreenHeight);</p><p>  mBlack = BitmapFactory.decodeResource(GameView.sResources, R.drawable.ai);</p><p>  mWhite = BitmapFactory.decodeReso

37、urce(GameView.sResources, R.drawable.human);</p><p>  mTitleSpace = (float) mScreenWidth / CHESS_WIDTH;</p><p>  mTitleHeight = mScreenHeight / 3;</p><p>  mTitleIndex_x = (float) (

38、mTitleSpace / 2);</p><p>  mTitleIndex_y = (float) (mTitleSpace / 2);</p><p>  setGameState(GS_GAME);</p><p><b>  }</b></p><p>  public void setGameState(in

39、t newState)</p><p><b>  {</b></p><p>  mGameState = newState;</p><p>  switch (mGameState)</p><p><b>  {</b></p><p>  case GS_GAME:

40、</p><p>  mGameMap = new int[CHESS_HEIGHT][CHESS_WIDTH];</p><p>  mMapHeightLengh = mGameMap.length;</p><p>  mMapWidthLengh = mGameMap[0].length;</p><p>  mCampTurn =

41、CAMP_HERO;</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  protected void Draw()</p><p><b>  

42、{</b></p><p>  sCanvas = mSurfaceHolder.lockCanvas();</p><p>  if (mSurfaceHolder == null || sCanvas == null)</p><p><b>  {</b></p><p><b>  retu

43、rn;</b></p><p><b>  }</b></p><p>  RenderGame();</p><p>  mSurfaceHolder.unlockCanvasAndPost(sCanvas);</p><p><b>  }</b></p><p&

44、gt;  private void RenderGame()</p><p><b>  {</b></p><p>  switch (mGameState)</p><p><b>  {</b></p><p>  case GS_GAME:</p><p>  Dra

45、wRect(Color.WHITE, 0, 0, mScreenWidth, mScreenHeight);</p><p>  RenderMap();</p><p><b>  break;</b></p><p>  case GS_END:</p><p>  DrawRect(Color.RED, 0, 0,

46、 mScreenWidth, mScreenHeight);</p><p>  DrawString(Color.WHITE, sResources.getString(mCampWinner) + "勝利 點(diǎn)擊繼續(xù)游戲", 50, 50);</p><p><b>  break;</b></p><p><b&g

47、t;  }</b></p><p><b>  }</b></p><p>  private void RenderMap()</p><p><b>  {</b></p><p><b>  int i, j;</b></p><p>

48、  DrawImage(bitmapBg, 0, 0, 0);</p><p>  for (i = 0; i < mMapHeightLengh; i++)</p><p><b>  {</b></p><p>  for (j = 0; j < mMapWidthLengh; j++)</p><p>

49、<b>  {</b></p><p>  int CampID = mGameMap[i][j];</p><p>  float x = (j * mTitleSpace) + mTitleIndex_x;</p><p>  float y = (i * mTitleSpace) + mTitleHeight + mTitleIndex_

50、y;</p><p>  if (CampID == CAMP_HERO)</p><p><b>  {</b></p><p>  DrawImage(mBlack, x, y, ALIGN_VCENTER | ALIGN_HCENTER);</p><p><b>  } </b></p

51、><p>  else if (CampID == CAMP_ENEMY)</p><p><b>  {</b></p><p>  DrawImage(mWhite, x, y, ALIGN_VCENTER | ALIGN_HCENTER);</p><p><b>  }</b></p>

52、;<p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  private void DrawRect(int color, int x, int y, int width, int height)</p&g

53、t;<p><b>  {</b></p><p>  sPaint.setColor(color);</p><p>  sCanvas.clipRect(x, y, width, height);</p><p>  sCanvas.drawRect(x, y, width, height, sPaint);</p>

54、;<p><b>  }</b></p><p>  private void DrawString(int color, String str, int x, int y)</p><p><b>  {</b></p><p>  sPaint.setColor(color);</p>&l

55、t;p>  sCanvas.drawText(str, x, y, sPaint);</p><p><b>  }</b></p><p><b>  @Override</b></p><p>  public boolean onTouchEvent(MotionEvent event)</p>

56、<p><b>  {</b></p><p>  int x = (int) event.getX();</p><p>  int y = (int) event.getY();</p><p>  switch (event.getAction())</p><p><b>  {</b&

57、gt;</p><p>  case MotionEvent.ACTION_DOWN:</p><p>  UpdateTouchEvent(x, y);</p><p><b>  break;</b></p><p>  case MotionEvent.ACTION_MOVE:</p><p&g

58、t;<b>  break;</b></p><p>  case MotionEvent.ACTION_UP:</p><p><b>  break;</b></p><p><b>  }</b></p><p>  return super.onTouchEvent(e

59、vent);</p><p><b>  }</b></p><p>  public boolean CheckPiecesMeet(int Camp)</p><p><b>  {</b></p><p>  int MeetCount = 0;</p><p><

60、;b>  // 橫向</b></p><p>  for (int i = 0; i < CALU_ALL_COUNT; i++)</p><p><b>  {</b></p><p>  int index = mMapIndexX - CALU_SINGLE_COUNT + i;</p><p&

61、gt;  if (index < 0 || index >= mMapWidthLengh)</p><p><b>  {</b></p><p>  if (MeetCount == CALU_SINGLE_COUNT)</p><p><b>  {</b></p><p>  r

62、eturn true;</p><p><b>  }</b></p><p>  MeetCount = 0;</p><p><b>  continue;</b></p><p><b>  }</b></p><p>  if (mGameMap

63、[mMapIndexY][index] == Camp)</p><p><b>  {</b></p><p>  MeetCount++;</p><p>  if (MeetCount == CALU_SINGLE_COUNT)</p><p><b>  {</b></p>&

64、lt;p>  return true;</p><p><b>  }</b></p><p><b>  } else</b></p><p><b>  {</b></p><p>  MeetCount = 0;</p><p><b&

65、gt;  }</b></p><p><b>  }</b></p><p><b>  // 縱向</b></p><p>  MeetCount = 0;</p><p>  for (int i = 0; i < CALU_ALL_COUNT; i++)</p>

66、<p><b>  {</b></p><p>  int index = mMapIndexY - CALU_SINGLE_COUNT + i;</p><p>  if (index < 0 || index >= mMapHeightLengh)</p><p><b>  {</b><

67、/p><p>  if (MeetCount == CALU_SINGLE_COUNT)</p><p><b>  {</b></p><p>  return true;</p><p><b>  }</b></p><p>  MeetCount = 0;</p&g

68、t;<p><b>  continue;</b></p><p><b>  }</b></p><p>  if (mGameMap[index][mMapIndexX] == Camp)</p><p><b>  {</b></p><p>  MeetC

69、ount++;</p><p>  if (MeetCount == CALU_SINGLE_COUNT)</p><p><b>  {</b></p><p>  return true;</p><p><b>  }</b></p><p><b>  }

70、else</b></p><p><b>  {</b></p><p>  MeetCount = 0;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  // 右斜<

71、;/b></p><p>  MeetCount = 0;</p><p>  for (int i = 0; i < CALU_ALL_COUNT; i++)</p><p><b>  {</b></p><p>  int indexX = mMapIndexX - CALU_SINGLE_COUNT

72、+ i;</p><p>  int indexY = mMapIndexY - CALU_SINGLE_COUNT + i;</p><p>  if ((indexX < 0 || indexX >= mMapWidthLengh) || (indexY < 0 || indexY >= mMapHeightLengh))</p><p>

73、;<b>  {</b></p><p>  if (MeetCount == CALU_SINGLE_COUNT)</p><p><b>  {</b></p><p>  return true;</p><p><b>  }</b></p><p&

74、gt;  MeetCount = 0;</p><p><b>  continue;</b></p><p><b>  }</b></p><p>  if (mGameMap[indexY][indexX] == Camp)</p><p><b>  {</b><

75、/p><p>  MeetCount++;</p><p>  if (MeetCount == CALU_SINGLE_COUNT)</p><p><b>  {</b></p><p>  return true;</p><p><b>  }</b></p>

76、<p><b>  } else</b></p><p><b>  {</b></p><p>  MeetCount = 0;</p><p><b>  }</b></p><p><b>  }</b></p><

77、p><b>  // 左斜</b></p><p>  MeetCount = 0;</p><p>  for (int i = 0; i < CALU_ALL_COUNT; i++)</p><p><b>  {</b></p><p>  int indexX = mMapInd

78、exX - CALU_SINGLE_COUNT + i;</p><p>  int indexY = mMapIndexY + CALU_SINGLE_COUNT - i;</p><p>  if ((indexX < 0 || indexX >= mMapWidthLengh) || (indexY < 0 || indexY >= mMapHeightLen

79、gh))</p><p><b>  {</b></p><p>  if (MeetCount == CALU_SINGLE_COUNT)</p><p><b>  {</b></p><p>  return true;</p><p><b>  }<

80、/b></p><p>  MeetCount = 0;</p><p><b>  continue;</b></p><p><b>  }</b></p><p>  if (mGameMap[indexY][indexX] == Camp)</p><p>&l

81、t;b>  {</b></p><p>  MeetCount++;</p><p>  if (MeetCount == CALU_SINGLE_COUNT)</p><p><b>  {</b></p><p>  return true;</p><p><b>

82、;  }</b></p><p><b>  } else</b></p><p><b>  {</b></p><p>  MeetCount = 0;</p><p><b>  }</b></p><p><b>  }&l

83、t;/b></p><p>  return false;</p><p><b>  }</b></p><p>  private void UpdateTouchEvent(int x, int y)</p><p><b>  {</b></p><p>  s

84、witch (mGameState)</p><p><b>  {</b></p><p>  case GS_GAME:</p><p>  if (x > 0 && y > mTitleHeight)</p><p><b>  {</b></p>&

85、lt;p>  mMapIndexX = (int) (x / mTitleSpace);</p><p>  mMapIndexY = (int) ((y - mTitleHeight) / mTitleSpace);</p><p>  if (mMapIndexX > mMapWidthLengh)</p><p><b>  {</

86、b></p><p>  mMapIndexX = mMapWidthLengh;</p><p><b>  }</b></p><p>  if (mMapIndexX < 0)</p><p><b>  {</b></p><p>  mMapIndexX

87、 = 0;</p><p><b>  }</b></p><p>  if (mMapIndexY > mMapHeightLengh)</p><p><b>  {</b></p><p>  mMapIndexY = mMapHeightLengh;</p><p&

88、gt;<b>  }</b></p><p>  if (mMapIndexY < 0)</p><p><b>  {</b></p><p>  mMapIndexY = 0;</p><p><b>  }</b></p><p>  if

89、(mGameMap[mMapIndexY][mMapIndexX] == CAMP_DEFAULT)</p><p><b>  {</b></p><p>  if (mCampTurn == CAMP_HERO)</p><p><b>  {</b></p><p>  mGameMap[mM

90、apIndexY][mMapIndexX] = CAMP_HERO;</p><p>  if (CheckPiecesMeet(CAMP_HERO))</p><p><b>  {</b></p><p>  mCampWinner = R.string.Role_black;</p><p>  setGameSt

91、ate(GS_END);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  mCampTurn = CAMP_ENEMY;</p><p><b>

92、  }</b></p><p><b>  } </b></p><p><b>  else</b></p><p><b>  {</b></p><p>  mGameMap[mMapIndexY][mMapIndexX] = CAMP_ENEMY;</

93、p><p>  if (CheckPiecesMeet(CAMP_ENEMY))</p><p><b>  {</b></p><p>  mCampWinner = R.string.Role_white;</p><p>  setGameState(GS_END);</p><p><b

94、>  } else</b></p><p><b>  {</b></p><p>  mCampTurn = CAMP_HERO;</p><p><b>  }</b></p><p><b>  }</b></p><p><

95、;b>  }</b></p><p><b>  }</b></p><p><b>  break;</b></p><p>  case GS_END:</p><p>  setGameState(GS_GAME);</p><p><b>

96、  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  public boolean isCheckInvite(String body)</p><p><b>  {</b></p>

97、;<p>  if (body.indexOf("invite") >= 0)</p><p><b>  {</b></p><p>  if (mGameState != GS_INVITING && mGameState != GS_COMFIRE && mGameState != GS_G

98、AME)</p><p><b>  {</b></p><p>  return true;</p><p><b>  }</b></p><p><b>  }</b></p><p>  return false;</p><

99、p><b>  }</b></p><p><b>  /**</b></p><p>  * 創(chuàng)建一個(gè)縮小或放大的新圖片</p><p><b>  * </b></p><p>  * @param resourcesID</p><p>  

100、* @param scr_width</p><p>  * @param res_height</p><p><b>  * @return</b></p><p><b>  */</b></p><p>  private Bitmap CreatMatrixBitmap(int resou

101、rcesID, float scr_width, float res_height)</p><p><b>  {</b></p><p>  Bitmap bitMap = null;</p><p>  bitMap = BitmapFactory.decodeResource(sResources, resourcesID);</

102、p><p>  int bitWidth = bitMap.getWidth();</p><p>  int bitHeight = bitMap.getHeight();</p><p>  float scaleWidth = scr_width / (float) bitWidth;</p><p>  float scaleHeight

103、 = res_height / (float) bitHeight;</p><p>  Matrix matrix = new Matrix();</p><p>  matrix.postScale(scaleWidth, scaleHeight);</p><p>  bitMap = Bitmap.createBitmap(bitMap, 0, 0, bit

104、Width, bitHeight, matrix, true);</p><p>  return bitMap;</p><p><b>  }</b></p><p><b>  /**</b></p><p><b>  * 繪制一個(gè)字符串</b></p>

105、<p><b>  * </b></p><p>  * @param text</p><p>  * @param x</p><p>  * @param y</p><p>  * @param anchor</p><p>  * @param Canvas</p>

106、<p>  * @param paint</p><p><b>  */</b></p><p>  private void DrawString(int color, String text, int x, int y, int anchor)</p><p><b>  {</b></p>

107、<p>  Rect rect = new Rect();</p><p>  sPaint.getTextBounds(text, 0, text.length(), rect);</p><p>  int w = rect.width();</p><p>  int h = rect.height();</p><p>

108、  int tx = 0;</p><p>  int ty = 0;</p><p>  if ((anchor & ALIGN_RIGHT) != 0)</p><p><b>  {</b></p><p>  tx = x - w;</p><p><b>  } <

109、;/b></p><p>  else if ((anchor & ALIGN_HCENTER) != 0)</p><p><b>  {</b></p><p>  tx = x - (w >> 1);</p><p><b>  }</b></p>&l

110、t;p><b>  else</b></p><p><b>  {</b></p><p><b>  tx = x;</b></p><p><b>  }</b></p><p>  if ((anchor & ALIGN_TOP) !

111、= 0)</p><p><b>  {</b></p><p>  ty = y + h;</p><p><b>  } </b></p><p>  else if ((anchor & ALIGN_VCENTER) != 0)</p><p><b>

112、;  {</b></p><p>  ty = y + (h >> 1);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b&

113、gt;  ty = y;</b></p><p><b>  }</b></p><p>  sPaint.setColor(color);</p><p>  sCanvas.drawText(text, tx, ty, sPaint);</p><p><b>  }</b><

114、/p><p><b>  /**</b></p><p>  * 繪制一張圖片可以選擇圖片的錨點(diǎn)位置</p><p><b>  * </b></p><p>  * @param canvas</p><p>  * @param paint</p><p&

115、gt;  * @param bitmap</p><p>  * @param x</p><p>  * @param y</p><p>  * @param angle</p><p><b>  */</b></p><p>  private void DrawImage(Bitmap

116、bitmap, float x, float y, int anchor)</p><p><b>  {</b></p><p>  int w = bitmap.getWidth();</p><p>  int h = bitmap.getHeight();</p><p>  float tx = 0;</

117、p><p>  float ty = 0;</p><p>  if ((anchor & ALIGN_RIGHT) != 0)</p><p><b>  {</b></p><p>  tx = x - w;</p><p><b>  } </b></p>

118、;<p>  else if ((anchor & ALIGN_HCENTER) != 0)</p><p><b>  {</b></p><p>  tx = x - (w >> 1);</p><p><b>  } </b></p><p><b>

119、;  else</b></p><p><b>  {</b></p><p><b>  tx = x;</b></p><p><b>  }</b></p><p>  if((anchor & ALIGN_TOP) != 0)</p>

120、<p><b>  {</b></p><p>  ty = y + h;</p><p><b>  } </b></p><p>  else if ((anchor & ALIGN_VCENTER) != 0)</p><p><b>  {</b>&l

121、t;/p><p>  ty = y - (h >> 1);</p><p><b>  } </b></p><p>  else if ((anchor & ALIGN_BOTTOM) != 0)</p><p><b>  {</b></p><p>  

122、ty = y - h;</p><p><b>  } </b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  ty = y;</b></p><p><b&

123、gt;  }</b></p><p>  sCanvas.drawBitmap(bitmap, tx, ty, sPaint);</p><p><b>  }</b></p><p>  //@Override</p><p>  public void surfaceChanged(SurfaceHold

124、er arg0, int arg1, int arg2, int arg3)</p><p><b>  {</b></p><p>  // TODO Auto-generated method stub</p><p><b>  }</b></p><p>  //@Override</

125、p><p>  public void surfaceCreated(SurfaceHolder arg0)</p><p><b>  {</b></p><p>  new Thread(this).start();</p><p><b>  }</b></p><p> 

126、 //@Override</p><p>  public void surfaceDestroyed(SurfaceHolder arg0)</p><p><b>  {</b></p><p>  mbLoop = false;</p><p><b>  }</b></p>&

127、lt;p>  //@Override</p><p>  public void run()</p><p><b>  {</b></p><p>  while (mbLoop)</p><p><b>  {</b></p><p><b>  try&

128、lt;/b></p><p><b>  {</b></p><p>  Thread.sleep(200);</p><p><b>  } </b></p><p>  catch (Exception e)</p><p><b>  {</b&g

129、t;</p><p><b>  }</b></p><p>  synchronized (mSurfaceHolder)</p><p><b>  {</b></p><p><b>  Draw();</b></p><p><b> 

130、 }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  技術(shù)關(guān)鍵和需要解決的關(guān)鍵問(wèn)題</p><p>  棋盤(pán)上棋子和交線的相對(duì)位置</p

131、><p>  交線,方格大小,和棋子大小,棋子間的相對(duì)位置之間的距離,棋子和棋盤(pán)交點(diǎn)之間的距離。</p><p><b>  快速判斷</b></p><p>  每次點(diǎn)擊棋盤(pán)都會(huì)有一個(gè)棋子出現(xiàn),之后會(huì)作出快速判斷,判斷當(dāng)前棋子和周?chē)遄邮欠裼锌赡芙M成5個(gè)連續(xù)的一串;如果可以,則判斷是黑子可以還是白子可以,然后彈出相應(yīng)的取勝提示框。之后,再自動(dòng)清屏

132、,重新開(kāi)始游戲,并記錄上次輸贏情況。</p><p>  第三部分 游戲成果分析</p><p><b>  效果截圖:</b></p><p><b>  1、游戲分析:</b></p><p>  游戲只實(shí)現(xiàn)了基本的游戲規(guī)則,具體游戲規(guī)則細(xì)節(jié)不明確,用戶(hù)體驗(yàn)一般,沒(méi)有記錄輸贏情況,不能保存游戲進(jìn)

133、度。</p><p><b>  2、改進(jìn)的地方:</b></p><p>  完善記錄功能,增加保存功能,設(shè)置推出提示,修改取勝提示,修改棋子和棋盤(pán)線的相對(duì)位置。</p><p><b>  五 總結(jié)與體會(huì)</b></p><p>  本次智能終端課程設(shè)計(jì)開(kāi)發(fā)的一款益智游戲五子棋;選擇開(kāi)發(fā)題目的原

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論