Android开发的斗地主牌桌实现源码
<p>将开发过程经常用的内容片段珍藏起来,如下内容内容是关于Android开发的斗地主牌桌实现的内容。</p><p> </p>
<p>package com.bison; <br><br>import android.app.Activity;<br>import android.content.pm.ActivityInfo;<br>import android.os.Bundle;<br>import android.view.Window;<br>import android.view.WindowManager;<br><br>public class PukeActivity extends Activity {<br> @Override<br> public void onCreate(Bundle savedInstanceState) {<br> super.onCreate(savedInstanceState);<br> requestWindowFeature(Window.FEATURE_NO_TITLE);<br> getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,<br> WindowManager.LayoutParams.FLAG_FULLSCREEN);<br><br> setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);<br> setContentView(new GameView(this));<br> }<br>}<br>2、牌桌页面</p>
<p>package com.bison;<br><br>import android.content.Context;<br>import android.graphics.Bitmap;<br>import android.graphics.BitmapFactory;<br>import android.graphics.Canvas;<br>import android.graphics.Rect;<br>import android.view.MotionEvent;<br>import android.view.SurfaceHolder;<br>import android.view.SurfaceView;<br><br>import com.bison.utils.Person;<br><br>public class GameView extends SurfaceView implements SurfaceHolder.Callback {<br><br> private final Person person;<br><br> public GameView(Context context) {<br> super(context);<br> getHolder().addCallback(this);<br> }<br><br> sourceBitmap = BitmapFactory.decodeResource(getResources(),<br> R.drawable.smallcard);<br> pukeHeight = sourceBitmap.getHeight() / 4;<br><br> backgroundDesk = BitmapFactory.decodeResource(getResources(),<br> R.drawable.gameback2);<br><br> deskHeight = backgroundDesk.getHeight();<br><br> backgroundPuke = BitmapFactory.decodeResource(getResources(),<br> R.drawable.cardback);<br> }<br><br> @Override<br> protected void onDraw(Canvas canvas) {<br> canvas.drawBitmap(backgroundDesk, 0, 0, null);<br> personPaint(canvas, pukeWidth, pukeHeight);<br> deskthreePukes(canvas, pukeWidth, pukeHeight);<br> }<br><br> public void personPaint(Canvas c, int pukeWidth, int pukeHeight) {<br> Rect src = new Rect();<br> Rect dst = new Rect();<br><br> for (int i = 0; i < 3; i++) {<br> for (int j = 0; j < 17; j++) {<br> c.drawBitmap(backgroundPuke, 35, 85, null);<br> }<br> src = person.cardRect(person.person2, pukeWidth,<br> pukeHeight);<br> c.drawBitmap(sourceBitmap, src, dst, null);<br> }<br> c.drawBitmap(backgroundPuke, deskWidth - 35 - pukeWidth,<br> 85, null);<br> }<br> }<br> }<br> }<br><br> private void deskthreePukes(Canvas c, int pukeWidth, int pukeHeight) {<br> Rect src = new Rect();<br> Rect dst = new Rect();<br> for (int i = 0; i < 3; i++) {<br> src = person.cardRect(person.threePukes, pukeWidth, pukeHeight);<br> 12 + pukeHeight);<br> c.drawBitmap(sourceBitmap, src, dst, null);<br> }<br> }<br><br> @Override<br> public boolean onTouchEvent(MotionEvent event) {<br> return super.onTouchEvent(event);<br> }<br><br> @Override<br> public void surfaceChanged(SurfaceHolder holder, int format, int width,<br> int height) {<br> }<br><br> @Override<br> public void surfaceCreated(SurfaceHolder holder) {<br> this.thread.setFlag(true);<br> this.thread.start();<br> }<br><br> @Override<br> public void surfaceDestroyed(SurfaceHolder holder) {<br> boolean retry = true;<br> this.thread.setFlag(false);<br> while (retry) {<br> try {<br> thread.join();<br> retry = false;<br> } catch (InterruptedException e) {<br> e.printStackTrace();<br> }<br> }<br><br> }<br><br> class FlushThread extends Thread {<br> private boolean flag = false;<br> private final int span = 500;<br> private final GameView gameView;<br> private final SurfaceHolder holder;<br><br> public FlushThread(SurfaceHolder holder, GameView gameView) {<br> this.gameView = gameView;<br> this.holder = holder;<br> }<br><br> @Override<br> public void run() {<br> Canvas canvas;<br> while (this.flag) {<br> canvas = null;<br> try {<br> canvas = this.holder.lockCanvas(null);<br> synchronized (this.holder) {<br> this.gameView.onDraw(canvas);<br> }<br> } finally {<br> if (canvas != null) {<br> this.holder.unlockCanvasAndPost(canvas);<br> }<br> }<br><br> try {<br> Thread.sleep(span);<br> } catch (InterruptedException e) {<br> e.printStackTrace();<br> }<br> }<br> }<br><br> public boolean isFlag() {<br> return flag;<br> }<br><br> public void setFlag(boolean flag) {<br> this.flag = flag;<br> }<br><br> }<br><br>}</p>
<p><br> <br> <br> <br>3、相关实体类扑克牌类:<br> <br> <br> </p>
<p>package com.bison.utils;<br><br>import java.util.Random;<br><br>public class Cards {<br> public int[] pukes = new int;<br><br> private static Cards cardsInstance = null;<br><br> private Cards() {<br> setPuke();<br> shuffle();<br> }<br><br> public static Cards getInstance() {<br> if (cardsInstance == null) {<br> cardsInstance = new Cards();<br> }<br> return cardsInstance;<br> }<br><br> private void setPuke() {<br> for (int i = 0; i < 54; i++) {<br> pukes = i + 1;<br> }<br> }<br><br> private void shuffle() {<br> Random rdm = new Random();<br> for (int i = 0; i < 54; i++) {<br> int rdmNo = rdm.nextInt(54);<br> int temp = pukes;<br> pukes = pukes;<br> pukes = temp;<br> }<br> }<br>}</p>
<p>玩家类:</p>
<p>package com.bison.utils;<br><br>import android.graphics.Rect;<br><br>public class Person {<br> private final Cards mCards = Cards.getInstance();<br><br> public int[] person1 = new int;<br> public int[] person2 = new int;<br> public int[] person3 = new int;<br><br> public int[] threePukes = new int;<br><br> public Person() {<br> personHold(mCards.pukes);<br> }<br><br> private void personHold(int[] pukes) {<br> int k = 0;<br> for (int i = 0; i < 3; i++) {<br> if (i == 0) {<br> for (int j = 0; j < 17; j++) {<br> person1 = pukes;<br> }<br> sort(person1);<br> }<br> if (i == 1) {<br> for (int j = 0; j < 17; j++) {<br> person2 = pukes;<br> }<br> sort(person2);<br> }<br> if (i == 2) {<br> for (int j = 0; j < 17; j++) {<br> person3 = pukes;<br> }<br> sort(person3);<br> }<br> }<br><br> threePukes = pukes;<br> threePukes = pukes;<br> threePukes = pukes;<br> }<br><br> private void sort(int[] ary) {<br> for (int i = 0; i < ary.length; i++) {<br> for (int j = 0; j < ary.length - i - 1; j++) {<br> if (ary > ary) {<br> int temp = ary;<br> ary = ary;<br> ary = temp;<br> }<br> }<br> }<br> }<br><br> public Rect cardRect(int cardValue, int width, int height) {<br> int x = 0, y = 0;<br> if (cardValue % 4 == 0) {<br> x = cardValue / 4 - 1;<br> y = 4;<br> } else {<br> x = cardValue / 4;<br> y = cardValue % 4;<br> }<br><br> return new Rect(left, top, right, bottom);<br> }<br>}<br> <br> </p>
<p> <br> <br> </p>
<p> <br> </p>
<p><br>
</p><br><br>
来源:https://www.cnblogs.com/gdszlg/p/10819097.html
頁:
[1]