android 水果老虎机 文档一
2015-10-17 21:57
447 查看
运用andrid最基础的sufaceView制作小时候的最爱,水果老虎机过程文档
先来张初始效果图,图片全部来在网络扣图,那个累呀.........
整个图型的画法,和转灯的画法
自定义获取中奖分数的方法
暂时做到这,实现了压注,开始游戏,中奖获取分数,暂时不能重复上次的压注,每运行一次,都会把压注和得分清0
还没有做赌大小等功能
先来张初始效果图,图片全部来在网络扣图,那个累呀.........
整个图型的画法,和转灯的画法
// 自定义画法 private void drawView() { try { if (sh != null) { iCanvas = sh.lockCanvas();// 获取画布 // 设置画笔和位图没有锯齿 iCanvas.setDrawFilter(new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG)); // 背景bg iCanvas.drawBitmap(bitmap_bg, null, new RectF(0, 0, screenWidth, screenHeight), null); // 得分条-win iCanvas.drawBitmap(bitmap_score_win, null, new RectF(margin, 0, margin + checkWidth * 3, checkWidth), null); iCanvas.drawText("" + winOddsScore, margin + checkWidth * 3 - 5, checkWidth - checkWidth / 7, iPaint_score); // 现在分数条-credit iCanvas.drawBitmap(bitmap_score_credit, null, new RectF(margin + checkWidth * 4, 0, margin + checkWidth * 7, checkWidth), null); iCanvas.drawText("" + creditNum, margin + checkWidth * 7 - 5, checkWidth - checkWidth / 7, iPaint_score); //画top正方型 for (int i = 0; i < 7; i++) { RectF rectTop = new RectF(margin + i * checkWidth, checkWidth, margin + checkWidth + i * checkWidth, checkWidth + checkWidth); iCanvas.drawBitmap(Content.getTopBitmaps()[i], null, rectTop, null); } // 画right正方型 for (int i = 1; i < 6; i++) { RectF rectRight = new RectF(margin + checkWidth * 6, i * checkWidth + checkWidth, margin + checkWidth * 7, checkWidth + i * checkWidth + checkWidth); iCanvas.drawBitmap(Content.getRightBitmaps()[i - 1], null, rectRight, null); } // 画bottom正方型 for (int i = 0; i < 7; i++) { RectF rectBottom = new RectF(margin + i * checkWidth, checkWidth * 6 + checkWidth, margin + checkWidth + i * checkWidth, checkWidth * 7 + checkWidth); iCanvas.drawBitmap(Content.getBottomBitmaps()[i], null, rectBottom, null); } // 画left正方型 for (int i = 1; i < 6; i++) { RectF rectLeft = new RectF(margin, i * checkWidth + checkWidth, margin + checkWidth, checkWidth + i * checkWidth + checkWidth); iCanvas.drawBitmap(Content.getLeftBitmaps()[i - 1], null, rectLeft, null); } // 移动的发光图标 if (isOk) { if (num < randomNum) {// 每次刷屏num+1;当比随机出来的转数小时,继续转,当大于等于时就停止 if (num < (randomNum / 13)) {// 控件转灯的速度,由慢-快-慢 sleepNum = 300; } else if (num < (randomNum * 2 / 13)) { sleepNum = 200; } else if (num < (randomNum * 3 / 13)) { sleepNum = 100; } else if (num < (randomNum * 4 / 13)) { sleepNum = 80; } else if (num < (randomNum * 5 / 13)) { sleepNum = 50; } else if (num < (randomNum * 6 / 13)) { sleepNum = 20; } else if (num < (randomNum * 7 / 13)) { sleepNum = 10; } else if (num < (randomNum * 8 / 13)) { sleepNum = 20; } else if (num < (randomNum * 9 / 13)) { sleepNum = 50; } else if (num < (randomNum * 10 / 13)) { sleepNum = 80; } else if (num < (randomNum * 11 / 13)) { sleepNum = 100; } else if (num < (randomNum * 12 / 13)) { sleepNum = 200; } else { sleepNum = 300; } if (num % 1 == 0) { if (num < randomNum - 1) {//最后一下声响(啪)的一声 soundPool.play(dingSound, 1, 1, 1, 0, 1); } else if (isPaSound) { soundPool.play(paSound, 1, 1, 1, 0, 1); isPaSound = false; } if (countTop < 7) { rectSelect = new RectF(margin + countTop * checkWidth, checkWidth, margin + checkWidth + countTop * checkWidth, checkWidth + checkWidth); iCanvas.drawBitmap(bitmap_sifangkuang, null, rectSelect, null); countTop++; } else if (countTop >= 7 && countRight < 6) { rectSelect = new RectF(margin + 6 * checkWidth, countRight * checkWidth + checkWidth, margin + checkWidth * 7, checkWidth + countRight * checkWidth + checkWidth); iCanvas.drawBitmap(bitmap_sifangkuang, null, rectSelect, null); countRight++; } else if (countRight >= 6 && countBottom >= 0) { rectSelect = new RectF(margin + countBottom * checkWidth, checkWidth * 6 + checkWidth, margin + checkWidth + countBottom * checkWidth, checkWidth * 7 + checkWidth); iCanvas.drawBitmap(bitmap_sifangkuang, null, rectSelect, null); countBottom--; } else if (countBottom < 0 && countLeft > 0) { rectSelect = new RectF(margin, checkWidth * countLeft + checkWidth, margin + checkWidth, checkWidth * countLeft + checkWidth + checkWidth); iCanvas.drawBitmap(bitmap_sifangkuang, null, rectSelect, null); countLeft--; } if (countLeft == 0) {// 循环一圈,以左上角0,0为始点 countTop = 0; countRight = 1; countLeft = 5; countBottom = 6; } } num++;//通过自加,接近随机出来的转运数值 } else { //最后停的一下 iCanvas.drawBitmap(bitmap_sifangkuang, null, rectSelect, null); float x = rectSelect.left; float y = rectSelect.top; // 赔率 // intBar+intSeven+intStar+intXG+intLD+intMG+intOrange+intApple if (isScore) { //自定义方法,获取中奖分数 winOddsScore = Content.getWinOdds(intBar, intSeven, intStar, intXG, intLD, intMG, intOrange, intApple, margin, checkWidth, x, y); } //System.out.println("中奖分数=" + winOddsScore); if (isStart) {// 按了go开始进入 if (winOddsScore == 0) {//没中奖,清0 cleanAllNum(); } } isStart = false; sleepNum = 100;//运气run的sleep时间 } } RectF rectBottom_1 = new RectF(margin, checkWidth * 7 + checkWidth, screenWidth - margin, checkWidth * 8 + checkWidth); iCanvas.drawBitmap(bitmap_bottom_1, null, rectBottom_1, null); RectF rectBottom_2 = new RectF(margin, checkWidth * 8 + checkWidth, screenWidth - margin, checkWidth * 8 + checkWidth / 2 + checkWidth); // iCanvas.drawBitmap(bitmap_bottom_2, null, rectBottom_2, // null); RectF rectBottom_3 = new RectF(margin, checkWidth * 9 + checkWidth / 2, screenWidth - margin, checkWidth * 11); iCanvas.drawBitmap(bitmap_bottom_3, null, rectBottom_3, null); iCanvas.drawText(stringBar, margin + chipNumWidth / 4, checkWidth * 8 + checkWidth * 2 / 5 + checkWidth, iPaint); iCanvas.drawText(stringSeven, margin + chipNumWidth + chipNumWidth / 5, checkWidth * 8 + checkWidth * 2 / 5 + checkWidth, iPaint); iCanvas.drawText(stringStar, margin + chipNumWidth * 2 + chipNumWidth / 5, checkWidth * 8 + checkWidth * 2 / 5 + checkWidth, iPaint); iCanvas.drawText(stringXG, margin + chipNumWidth * 3 + chipNumWidth / 6, checkWidth * 8 + checkWidth * 2 / 5 + checkWidth, iPaint); iCanvas.drawText(stringLD, margin + chipNumWidth * 4 + chipNumWidth / 6, checkWidth * 8 + checkWidth * 2 / 5 + checkWidth, iPaint); iCanvas.drawText(stringMG, margin + chipNumWidth * 5 + chipNumWidth / 6, checkWidth * 8 + checkWidth * 2 / 5 + checkWidth, iPaint); iCanvas.drawText(stringOrange, margin + chipNumWidth * 6 + chipNumWidth / 7, checkWidth * 8 + checkWidth * 2 / 5 + checkWidth, iPaint); iCanvas.drawText(stringApple, margin + chipNumWidth * 7, checkWidth * 8 + checkWidth * 2 / 5 + checkWidth, iPaint); } } catch (Exception e) { } finally { if (iCanvas != null) { sh.unlockCanvasAndPost(iCanvas);// 解锁画布并提交 } } }
自定义获取中奖分数的方法
//传进来中奖的坐标,返回中奖的赔率和中奖的水果 public static int getWinOdds(int intBar,int intSeven,int intStar,int intXG,int intLD,int intMG,int intOrange,int intApple,float margin,float checkWidth,float x,float y){ // System.out.println("intBar="+intBar); // System.out.println("intSeven="+intSeven); int winOdds[] = new int[2]; int winOddsScroe = 0; if(y==checkWidth){//top switch ((int)((x-margin)/checkWidth)) { case 0: winOdds[0] = 10; winOdds[1] = 1; break; case 1: winOdds[0] = 20; winOdds[1] = 3; break; case 2: winOdds[0] = 25; winOdds[1] = 7; break; case 3: winOdds[0] = 50; winOdds[1] = 7; break; case 4: winOdds[0] = 5; winOdds[1] = 0; break; case 5: winOdds[0] = 2; winOdds[1] = 0; break; case 6: winOdds[0] = 15; winOdds[1] = 2; break; default: break; } } if((x-margin)/6==checkWidth){ switch ((int)(y/checkWidth)) { case 2: winOdds[0] = 20; winOdds[1] = 4; break; case 3: winOdds[0] = 2; winOdds[1] = 4; break; case 4: winOdds[0] = -1; winOdds[1] = -1; break; case 5: winOdds[0] = 5; winOdds[1] = 0; break; case 6: winOdds[0] = 2; winOdds[1] = 1; break; default: break; } } if(y==checkWidth*7){ switch ((int)((x-margin)/checkWidth)) { case 0: winOdds[0] = 15; winOdds[1] = 2; break; case 1: winOdds[0] = 2; winOdds[1] = 2; break; case 2: winOdds[0] = 5; winOdds[1] = 0; break; case 3: winOdds[0] = 40; winOdds[1] = 6; break; case 4: winOdds[0] = 2; winOdds[1] = 6; break; case 5: winOdds[0] = 20; winOdds[1] = 3; break; case 6: winOdds[0] = 10; winOdds[1] = 1; break; default: break; } } if(x==margin){ switch ((int)(y/checkWidth)) { case 2: winOdds[0] = 2; winOdds[1] = 3; break; case 3: winOdds[0] = 5; winOdds[1] = 0; break; case 4: winOdds[0] = -2; winOdds[1] = -2; break; case 5: winOdds[0] = 2; winOdds[1] = 5; break; case 6: winOdds[0] = 30; winOdds[1] = 5; break; default: break; } } //intBar+intSeven+intStar+intXG+intLD+intMG+intOrange+intApple switch (winOdds[1]) { case 0: winOddsScroe = intApple * winOdds[0]; break; case 1: winOddsScroe = intOrange * winOdds[0]; break; case 2: winOddsScroe = intMG * winOdds[0]; break; case 3: winOddsScroe = intLD * winOdds[0]; break; case 4: winOddsScroe = intXG * winOdds[0]; break; case 5: winOddsScroe = intStar * winOdds[0]; break; case 6: winOddsScroe = intSeven * winOdds[0]; break; case 7: winOddsScroe = intBar * winOdds[0]; break; default: break; } return winOddsScroe; }
暂时做到这,实现了压注,开始游戏,中奖获取分数,暂时不能重复上次的压注,每运行一次,都会把压注和得分清0
还没有做赌大小等功能
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法