Android 21点游戏APP设计报告

Android21点游戏APP设计报告

文章目录

  • Android21点游戏APP设计报告
  • 一、项目设计背景
  • 二、项目需求分析与功能介绍
    • [2.1 功能设计需求分析](#2.1 功能设计需求分析)
    • [2.2 功能模块分析](#2.2 功能模块分析)
    • [2.3 系统功能操作流程图](#2.3 系统功能操作流程图)
  • 三、开发环境与工具介绍
    • [3.1 开发环境](#3.1 开发环境)
    • [3.2 工具介绍](#3.2 工具介绍)
  • 四、界面设计
    • [4.1 游戏启动与下注界面设计](#4.1 游戏启动与下注界面设计)
    • [4.2 游戏主界面设计](#4.2 游戏主界面设计)
    • [4.3 菜单功能设计](#4.3 菜单功能设计)
    • [4.4 数据库设计](#4.4 数据库设计)
  • 五、创新与改进
    • [5.1 破产补助机制](#5.1 破产补助机制)
    • [5.2 数据自动持久化](#5.2 数据自动持久化)
    • [5.3 沉浸式体验](#5.3 沉浸式体验)
  • 六、总体设计展示
    • [6.1 打开 app,进入下注界面](#6.1 打开 app,进入下注界面)
    • [6.2 下注与开始游戏](#6.2 下注与开始游戏)
    • [6.3 游戏过程:要牌与停牌](#6.3 游戏过程:要牌与停牌)
    • [6.4 游戏结算:胜负判定](#6.4 游戏结算:胜负判定)
    • [6.5 查看战绩与菜单](#6.5 查看战绩与菜单)
    • [6.6 退出操作](#6.6 退出操作)
  • 七、总结与心得
    • [7.1 总结](#7.1 总结)
    • [7.2 心得](#7.2 心得)

一、项目设计背景

随着智能手机的普及,手机游戏已成为人们休闲娱乐的重要方式。棋牌类游戏因其规则简单、对抗性强而深受喜爱。Blackjack(21点)作为一种经典的扑克游戏,在全球范围内拥有广泛的受众。

本项目旨在设计并实现一款基于 Android 平台的 Blackjack 游戏应用。通过该应用,用户可以随时随地体验 21 点游戏的乐趣。项目采用 Java 语言开发,利用 Android Studio 作为集成开发环境,实现了游戏的核心逻辑、界面交互以及数据持久化等功能。该项目不仅是一个娱乐工具,也是对 Android 应用开发技术的一次综合实践。

二、项目需求分析与功能介绍

2.1 功能设计需求分析

本应用的主要目标是还原真实的 21 点游戏体验,主要功能需求如下:

  1. 下注功能:玩家在开始游戏前,需要选择下注的金额。系统提供多种筹码面额(如 5, 10, 20, 50)供玩家选择。
  2. 发牌与游戏流程:系统需按照 21 点规则进行发牌,玩家可以查看自己的手牌和庄家的一张明牌。
  3. 玩家操作:玩家根据手牌点数,可以选择"要牌"(Hit)或"停牌"(Stand)。
  4. 胜负判定:游戏需自动计算点数,处理爆牌(Bust)、黑杰克(Blackjack)等特殊情况,并根据规则判定玩家与庄家的胜负。
  5. 数据记录:系统需要记录玩家的资产(Money)、最高分(Max Score)、胜场(Win Count)和负场(Lose Count),并在应用关闭后保留这些数据。
  6. 破产保护:当玩家资产不足以进行最基本的下注时,系统应提供"破产补助",确保游戏可以继续进行。

2.2 功能模块分析

根据需求分析,系统主要划分为以下三个核心模块:

  1. 下注模块 (Betting Module)

    • 负责显示当前玩家资产和战绩。
    • 提供不同面额的筹码按钮供玩家累加赌注。
    • 提供"开始游戏"和"重置游戏"的入口。
    • 处理破产逻辑,发放救济金。
  2. 游戏核心模块 (Game Core Module)

    • 牌桌视图 (TableView):绘制游戏背景、扑克牌、动画效果。
    • 游戏逻辑 (Game Logic):包含洗牌、发牌、点数计算、庄家 AI(自动要牌逻辑)等。
    • 交互控制 (Interaction):响应玩家的触摸事件,执行要牌或停牌操作。
  3. 数据存储模块 (Data Storage Module)

    • 利用 SQLite 数据库存储用户的游戏数据。
    • 提供数据的增删改查接口,确保数据的持久化和一致性。

2.3 系统功能操作流程图

系统整体操作流程如下:

  1. 启动应用 -> 进入下注界面。
  2. 下注 -> 点击筹码按钮增加赌注 -> 点击 Start 按钮。
  3. 游戏开始 -> 系统发牌(玩家两张,庄家一明一暗)。
  4. 玩家决策 -> 若点数不足 21,选择"要牌"或"停牌"。
    • 要牌 -> 获得一张新牌 -> 若超过 21 点则爆牌(负)。
    • 停牌 -> 结束玩家回合,进入庄家回合。
  5. 庄家回合 -> 庄家揭开暗牌 -> 若点数小于 17 则强制要牌,直到大于等于 17 或爆牌。
  6. 结算 -> 比较双方点数 -> 判定胜/负/平 -> 更新玩家资产和战绩。
  7. 循环 -> 返回下注界面或直接开始新的一局。







Hit (要牌)


Stand (停牌)




启动应用
是否首次进入?
初始化数据库

设置初始金币
从数据库读取数据
BettingActivity

下注界面
选择筹码

5/10/20/50
点击 Start?
BlackjackGameActivity

游戏主界面
系统发牌

玩家2张, 庄家1明1暗
检查 Blackjack?
直接结算
玩家回合
选择操作
发一张牌
是否爆牌 > 21?
玩家输 (Bust)
庄家回合
揭开暗牌
点数 < 17?
庄家要牌
庄家爆牌?
玩家赢
比牌结算
更新数据库

扣除金币
更新数据库

增加金币
更新数据库

根据胜负处理
弹出结果对话框
返回下注界面

三、开发环境与工具介绍

3.1 开发环境

  • 操作系统:Windows 10 / 11
  • 开发工具:Android Studio Ladybug | 2024.2.1
  • 编程语言:Java (JDK 1.8+)
  • 构建工具:Gradle 8.11.1

3.2 工具介绍

  1. Android SDK:提供了 Android 平台开发的 API 库和工具集,支持界面绘制、组件交互、系统服务调用等。
  2. SQLite :Android 内置的轻量级关系型数据库,用于存储玩家的金币、战绩等结构化数据。本项目通过 SQLiteOpenHelper 进行数据库的创建和版本管理。
  3. XML Layouts:使用 XML 定义界面布局,实现了 UI 结构与逻辑代码的分离,便于界面的维护和适配。

四、界面设计

4.1 游戏启动与下注界面设计

BettingActivity 是应用的入口界面。

  • 布局结构 :采用 ConstraintLayout 实现灵活的适配。
  • 顶部:显示应用名称的 Toolbar。
  • 中部 :核心交互区。
    • 筹码区 :放置了 5, 10, 20, 50 四种面额的圆形按钮,背景使用 bg_button_circle_selector 实现点击反馈。
    • 信息展示:显示当前的下注金额 (Clip In)。
  • 底部
    • 操作按钮:包含 "Restart" (重置) 和 "Play Game" (开始) 两个圆角矩形按钮。
    • 战绩面板:展示 Win, Lose, Max Score 等统计数据。

4.2 游戏主界面设计

BlackjackGameActivity 是游戏进行的主要场所。

  • 布局结构 :使用 FrameLayout 作为根布局,背景设置为绿色的牌桌图片 (bg_game)。
  • 自定义视图 :核心区域是一个自定义 View ------ BlackjackTableView
    • 该 View 负责通过 Canvas 绘制扑克牌、玩家区域和庄家区域。
    • 动态显示发牌动画和翻牌效果。
  • 状态栏 :底部包含一个 TableLayout,实时显示当前的胜负场次和最高分,方便玩家随时查看战绩。
  • 交互弹窗 :游戏结束时,通过 AlertDialog 弹出胜负结果(如 "Player Win", "Banker Burst" 等),并提示玩家确认。

4.3 菜单功能设计

在下注界面,通过右上角的菜单栏 (Option Menu) 提供额外功能:

  • Restart:重置所有游戏数据,恢复初始资金。
  • Asset (Prop):查看当前拥有的特殊资产(如有)。
  • Help:弹出帮助对话框,介绍游戏规则。
  • Exit:退出应用程序。

4.4 数据库设计

系统使用 UserDataDB 类管理数据库 blackjack_db

主要数据表 blackjack_table 结构如下:

字段名 类型 描述
_id integer 主键,自增
max_score text 玩家历史最高资产
my_money text 玩家当前持有金币
win_count text 胜利场次
lose_count text 失败场次

此外,还有 blackjack_menu_table 用于扩展存储菜单或道具相关的数据。

五、创新与改进

5.1 破产补助机制

为了提升用户体验,防止玩家因运气不佳输光所有金币而无法继续游戏,系统引入了"破产补助"机制。

  • 逻辑:当检测到玩家金币不足以支付最小筹码时,系统会自动发放救济金(如 500 金币)。
  • 实现 :在 BettingActivity 的菜单或逻辑中判断 mMoney 状态,触发 update 操作增加数据库中的金币数值。

5.2 数据自动持久化

区别于普通的单机游戏,本应用实现了完整的数据持久化。

  • 实时保存 :每局游戏结束(结算胜负)后,系统会立即调用 mDB.update() 方法,将最新的金币和战绩写入 SQLite 数据库。
  • 自动恢复 :应用下次启动时,在 onCreate 方法中读取数据库,恢复玩家上一次的进度,确保持续的游戏体验。

5.3 沉浸式体验

应用在界面设计上追求沉浸感:

  • 全屏显示 :在 Activity 中使用了 requestWindowFeature(Window.FEATURE_NO_TITLE) 和相关 Flag,隐藏了系统状态栏,让玩家专注于游戏桌面。
  • 视觉风格:整体采用深绿色背景模拟真实赌场牌桌,配合清晰的扑克牌资源,营造身临其境的氛围。

六、总体设计展示

6.1 打开 app,进入下注界面

启动应用后,用户首先看到下注界面。界面上方显示当前持有的金币数,下方列出历史战绩。若为首次进入,金币为初始值(如 5000)。

6.2 下注与开始游戏

用户点击屏幕中央的圆形筹码按钮(5, 10, 20, 50),下注金额会累加显示在屏幕上。确认下注金额后,"Play Game" 按钮变为可用状态,点击即可进入游戏。

6.3 游戏过程:要牌与停牌

进入游戏界面,系统自动发牌。屏幕下方显示玩家手牌点数。

  • 若点数较小,玩家可选择继续要牌。
  • 若点数接近 21 点,玩家选择停牌,等待庄家操作。

6.4 游戏结算:胜负判定

庄家操作结束后,系统弹出对话框显示本局结果(如 "You Win!", "Push" 等)。点击确认后,界面自动跳转回下注界面(或重置牌桌),金币数根据胜负自动增减。

6.5 查看战绩与菜单

在下注界面,用户可以清晰地看到自己的胜率变化。点击右上角菜单键,可以调出帮助信息或重置游戏数据,重新开始挑战。

6.6 退出操作

通过菜单中的 "Exit" 选项或连续按返回键,可以安全退出应用。系统确保所有数据在退出前已保存。

七、总结与心得

7.1 总结

本次课程设计完成了一款功能完备的 Android 21点游戏。项目从需求分析出发,经历了界面设计、逻辑编码、数据库集成和测试调试等阶段。最终实现的应用具备流畅的游戏体验和稳定的数据存储功能,达到了预期的设计目标。

7.2 心得

通过开发这个项目,深入理解了 Android 应用的生命周期管理、Activity 之间的跳转与传值、以及 SQLite 数据库在移动端的应用。特别是在处理游戏逻辑(如 A 的点数计算、胜负判定)时,锻炼了逻辑思维能力。同时,自定义 View 的绘制也让我对 Android 的图形系统有了更直观的认识。未来可以考虑加入网络对战功能,将单机游戏升级为联机游戏。

相关推荐
落羽凉笙5 分钟前
Python基础(4)| 详解程序选择结构:单分支、双分支与多分支逻辑(附代码)
android·服务器·python
携欢11 分钟前
portswigger靶场之修改序列化数据类型通关秘籍
android·前端·网络·安全
·云扬·1 小时前
MySQL四大系统库详解:作用、核心表与实用SQL查询
android·sql·mysql
普马萨特1 小时前
移动网络信号指标与单位整理(2G/3G/4G/5G Android vs IoT)
android·网络·物联网
de之梦-御风1 小时前
【电视投屏】针对“局域网投屏开源项目(Android 手机 ↔ Android TV)
android·智能手机·开源
threelab1 小时前
Merge3D 三维引擎中 GeoJSON 数据加载的整体设计
android·3d
优选资源分享2 小时前
Escrcpy 便携版 v2.0.0:安卓手机电脑同屏软件
android·智能手机·电脑
2501_915918412 小时前
介绍如何在电脑上查看 iPhone 和 iPad 的完整设备信息
android·ios·小程序·uni-app·电脑·iphone·ipad
TheNextByte12 小时前
如何通过蓝牙将照片从 iPhone 分享到Android ?
android·gitee·iphone
2501_916008892 小时前
没有 Mac 如何在 Windows 上创建 iOS 应用描述文件
android·macos·ios·小程序·uni-app·iphone·webview