freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于j2me平臺的手機游戲貪吃蛇程序的設(shè)計與實現(xiàn)(已改無錯字)

2023-07-20 12:33:13 本頁面
  

【正文】 0。 k。 k++ )//從返回的隨機數(shù)中抽取 { //其中的一幅出來作背景() if( r ( maxRandk+1 ) )//向右移K+1位,例:b=ai。向右移n位相當(dāng)于除以2的n次方 // b1=ai。向左移n位相當(dāng)于乘以2的n次方 { map_bg[i][j] = k。 } } } } ()。} 游戲運行畫面MIDP的游戲設(shè)計,本質(zhì)上就是用一個線程或者定時器產(chǎn)生重繪事件,用線程和用戶輸入改變游戲狀態(tài)。這個游戲也不例外,啟動MIDlet后,就立即生成一個重繪線程,該線程每隔50ms繪制一次屏幕。當(dāng)然,重繪時有一些優(yōu)化措施,并不是屏幕上所有的像素都需要重繪,而是有所選擇,比如游戲畫布上那些已經(jīng)固定下來的就不需重繪。游戲畫布是一個CommandListener,可以接受用戶鍵盤命令,控制蛇的左移,右移,下移,上移。其代碼如下:import .*。import .*。import 。public class Snakes extends Sprite{ public int[][] snakes。 private int SNAKES_NUM。 private Random random。 public int snake_n =3。 public SnakeGameSprite snakegamesprite。 private int frameWidth,frameHeight。 public static final int BULLET_TYPE_LEFT=0。 public static final int BULLET_TYPE_RIGHT=1。 public static final int BULLET_TYPE_TOP=2。 public static final int BULLET_TYPE_BOTTOM=3。 private int CanvasWidth,CanvasHeight。 private int direction。 /**向上*/ private final int DIRECTION_UP = 0。 /**向下*/ private final int DIRECTION_DOWN = 1。 /**向左*/ private final int DIRECTION_LEFT = 2。 /**向右*/ private final int DIRECTION_RIGHT = 3。 private int aspect_x= 0。 private int aspect_y= 1。 public Snakes(Image image,int frameWidth,int frameHeight) { super(image,frameWidth,frameHeight)。//使用了Sprite類的構(gòu)造函數(shù) random=new Random()。 } public void setSnakesNum(int SNAKES_NUM){ = SNAKES_NUM。 } public void setCanvasSize(int CanvasWidth,int CanvasHeight){ = CanvasWidth。 = CanvasHeight。 } public void initSnakes(){//根據(jù)蛇節(jié)數(shù)目創(chuàng)建蛇節(jié)數(shù)組 snakes=new int[SNAKES_NUM][2]。//這句最重要 snakes[0][0] = 50 。//節(jié)點0的X坐標 snakes[0][1] = 40。//節(jié)點0的Y坐標 } // public void draw(Graphics g) {//多個節(jié)點的繪制 for(int i =snake_n 。i 0。i){ snakes[i][0] = snakes[i 1][0]。 snakes[i][1] = snakes[i 1][1]。 draw(g,i)。 } snakes[0][0] += aspect_x*8。 snakes[0][1] += aspect_y*8。 } private void draw(Graphics g,int i){//第I個節(jié)點的繪制 setPosition(snakes[i][0],snakes[i][1])。 paint(g)。//繪制出第I節(jié)節(jié)點 } public void move(int direction){ switch( direction ) { case DIRECTION_UP: if( aspect_y = 0) { aspect_x = 0。 aspect_y = 1。 } break。 case DIRECTION_DOWN: if( aspect_y = 0) { aspect_x = 0。 aspect_y = +1。 } break。 case DIRECTION_LEFT: if( aspect_x = 0) { aspect_y = 0。 aspect_x = 1。 } break。 case DIRECTION_RIGHT: if( aspect_x = 0) { aspect_y = 0。 aspect_x = +1。 } break。 } }} 整個游戲的流程控制體現(xiàn)在游戲畫布對象的paint()方法里。paint()根據(jù)當(dāng)前的游戲狀態(tài),繪制出當(dāng)時的游戲畫面。歡迎畫面和Game Over畫面的繪制相當(dāng)簡單,游戲暫停畫面的繪制也相當(dāng)容易,就是設(shè)立標志,讓paint()執(zhí)行的時候無需真正執(zhí)行重繪動作。 游戲開始畫面class SplashScreen extends Canvas implements Runnable{ private final SnakesMID midlet。 private Image splashImage。 private volatile boolean dismissed = false。 SplashScreen( SnakesMID midlet) { = midlet。 setFullScreenMode(true)。 splashImage = (/)。 new Thread(this).start()。 } public void run() { synchronized(this) { try { wait(3000L)。 // 3 seconds } catch (InterruptedException e) { // can39。t happen in MIDP: no method } dismiss()。 } } public void paint(Graphics g) { int CanvasWidth = getWidth()。 int CanvasHeight = getHeight()。 (0x00000000)。 // 設(shè)置成白色 (0, 0, CanvasWidth, CanvasHeight)。 (0x000000FF)。 // 設(shè)置成藍色 (1, 1, CanvasWidth3, CanvasHeight3)。 if (splashImage != null) { (splashImage, CanvasWidth/2, CanvasHeight/2, | )。 splashImage = null。 } ((, , ))。 int centerX = CanvasWidth / 2。 int centerY = CanvasHeight / 2+60。 (0x00FFFFFF)。 // 字體外部顏色,先繪制外部,圍成一框 drawText(g, centerX, centerY 1)。 drawText(g, centerX, centerY + 1)。 drawText(g, centerX 1, centerY)。 drawText(g, centerX + 1, centerY)。 (0x00ff0000)。 // 字體內(nèi)部顏色,繪制中間 drawText(g, centerX, centerY)。 /**準備完畢開始進行主類的new Thread(this).start()啟動線程**/ ()。 } private void drawText(Graphics g, int centerX, int centerY) { int fontHeight = ().getHeight()。//獲得當(dāng)前使用字體的高 int textHeight = 2 * fontHeight。//獲得當(dāng)前使用字體的高后再乘2 int topY = centerY textHeight / 2。//設(shè)定y坐標 (歡迎您使用貪吃蛇游戲, centerX, topY, | )。 } public synchronized void keyPressed(int keyCode) { dismiss()。
點擊復(fù)制文檔內(nèi)容
語文相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1