《猜猜看》游戏开发总结


一、开发目的

在校园中,我们经常遇到某个学生叫自己老师,但老师却想不出该学生的名字,彼此显得有点尴尬。不仅师生之间的互动交流会有这样的问题存在,就连我们身边的同学之间也有这样的情况发生,就比如我自己,有时候呢,看到自己认识的同学会上前去跟他打招呼,可是那个同学却不记得我是谁,只知道我的名字,彼此也是很尴尬。《猜猜看》游戏就是为了更好的促进师生以及学生彼此之间的互动交流而开发出来的,让彼此更进一步了解认识对方。

二、功能简介

由于自己能力和时间的有限性,只实现了相对较简单的猜猜看的功能,即随机显示一张相片与3个名字,看着图片选择正确的名字,并且可以通过点击图片随机显示另一张想要猜测的图片从而进行下一次的猜测。实现该功能是通过学习android的相关知识所开发出来的一个APP,开发所用到的工具为eclipse。下面就对该游戏的相关功能及程序进一步的说明。

三、《猜猜看》游戏APP效果图展示

首先,当你把该游戏开发的apk安装到自己的手机上时,你将会来到一个游戏向导界面,由于本人的能力不足,所以向导界面做的比较简陋,往后会不断学习来进一步改进的。游戏向导界面如下所示:

接着,此时你有两种选择,你可以选择不玩该游戏直接点击退出按钮退出游戏。当然,既然都来了,那何不玩一玩呢,那就让你的手指动起来吧,点击开始游戏,便可进入游戏主界面,在你进入游戏主界面时,此时会随机显示一张图片,对应图片下方会随机产生三个名字,看着图片选择你觉得该相片对应的人的名字,当你选择对应名字时,将会弹出一个提示的吐司告诉你是否猜测正确,当正确时,将会再一次随机产生另一张图片和三个名字进行下一轮猜测,当猜错时,则将让你继续猜测,直到猜测正确进入下一轮猜测,你也可以选择不猜测该同学,点击图片将会随机切换显示另一张图片。当你玩累的时候,不想继续玩下去了或者想看一下游戏说明,你可以点击最下方的按钮返回向导界面进一步退出游戏。游戏主界面如下所示:(由于界面显示效果图过多,就不一一粘贴了,只列举一两个)

刚进入猜测时:

猜测错误继续猜:

猜测正确进入下一次猜测,图片随机又取一张:

学生的图片存放于工程资源文件夹res下的drawable-xhdpi下(由于学生图片较多,只筛选了一部分学生的图片,可以继续进行扩充):

上面讲述的就是该游戏功能的大致效果图。下面对一些核心代码进行进一步的解读。

四、核心代码

  1. 游戏向导界面

【1】游戏向导界面用到的布局,该布局分别声明了四个控件,对四个控件的相关属性进行了相关的设置,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/start" ><TextViewandroid:id="@+id/title"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="70dp"android:layout_marginTop="35dp"android:text="猜猜看"android:textColor="#9508A7"android:textSize="40sp"android:textStyle="bold|italic" /><TextViewandroid:id="@+id/text"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:layout_marginLeft="20dp"android:text="@string/rule"android:textSize="18sp" /><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_below="@id/text"android:layout_marginTop="50dp"android:orientation="horizontal" ><Buttonandroid:id="@+id/bt_one"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:text="退出" /><Buttonandroid:id="@+id/bt_two"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:text="开始游戏" /></LinearLayout></RelativeLayout>

【2】游戏向导界面打开时将使用的startActivity启动界面,该startActivity对上述布局声明的控件进行了初始化,并为按钮控件设置了相应的点击事件,退出游戏使用了Activity中的finish()方法,销毁界面从而达到退出游戏,开始游戏则是使用了Intent意图对象的startActivity来启动另一个界面,startActivity界面核心代码如下:

package com.example.game;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;public class StartActivity extends Activity implements OnClickListener {private Button exit, play;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_explain);init();}private void init() {exit = (Button) findViewById(R.id.bt_one);play = (Button) findViewById(R.id.bt_two);exit.setOnClickListener(this);play.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.bt_one:finish();break;case R.id.bt_two:Intent intent = new Intent(this, MainActivity.class);startActivity(intent);finish();break;default:break;}}
}

2. 定义一个Student类用于存放同学对应的姓名id,学号id,专业id(专业id由于能力和时间关系,只是设想了实现的方式,还未真正实现,会进一步学习来完善的),代码如下:

package com.example.game.modle;public class Student {/*** 姓名id*/public int nameId;/*** 图片id*/public int drawableId;/*** 分类id*/public int cateId;public Student(int nameId, int drawableId, int cateId) {super();this.nameId = nameId;this.drawableId = drawableId;this.cateId = cateId;}}

3. 存放同学学号姓名的资源文件strings.xml(由于学生人数很多,只是大概加入了一部分学生,可以进一步增加修改要猜测的人的学号姓名),代码如下:

<?xml version="1.0" encoding="utf-8"?>
<resources><string name="app_name">猜猜看</string><string name="menu_settings">Settings</string><string name="student_name0">201211672104陈衍权</string><string name="student_name1">201211672220林金燕</string><string name="student_name2">201211671217彭政</string><string name="student_name3">201211671221谭思萍</string><string name="student_name4">201211671231周伟峰</string><string name="student_name5">201211671122吴丹妮</string><string name="student_name6">201211671121王晓俊</string><string name="student_name7">201211671123吴坚鑫</string><string name="student_name8">201211671230周荃</string><string name="student_name9">201211671218戚水仙 </string><string name="student_name10">201211672206郭静梅</string><string name="student_name11">201211671117聂双燕</string><string name="student_name12">201211671127曾婷</string><string name="student_name13">201211671205冯嘉敏</string><string name="student_name14">2201211671228袁春丽</string><string name="student_name15">201211671229郑碧君</string><string name="student_name16">201211671220施学剑</string><string name="student_name17">201211671227叶琛</string><string name="student_name18">201211671232左楒颖</string><string name="student_name19">201211671131朱嘉颖 </string><string name="rule">游戏说明:点击下边的按钮可以进入游戏,进入游戏后将会随机产生一张图片,对应会随机产生三个名字,从下边的三个名字中选择您猜测的图片的人名,当猜测正确时会继续随机产生一张图片,继续猜测;当猜测错误时,将会不变的让您继续猜测,直到猜测正确进入下一次猜测。您如果不想猜测某一张图片,您也可以点击图片切换不同的图片进行猜测。是不是已经迫不及待想进入游戏了,那就让我们一起开始来玩吧,Let\'s go !!!</string></resources>

4. 游戏主界面

【1】游戏主界面的布局,该布局声明了六个控件,并对控件进行了相关属性的设置,代码如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity" ><TextViewandroid:id="@+id/textView"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerHorizontal="true"android:layout_marginTop="30dp"android:text=" Welcom TO Play Guess "android:textColor="#C950C9"android:textSize="20sp"android:textStyle="bold|italic" /><ImageViewandroid:id="@+id/img"android:layout_width="wrap_content"android:layout_height="250dp"android:layout_centerHorizontal="true"android:layout_centerVertical="true" /><LinearLayoutandroid:id="@+id/ll"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_below="@id/img"android:layout_marginTop="10dp"android:orientation="horizontal" ><TextViewandroid:id="@+id/tv0"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_margin="5dp"android:layout_weight="1"android:background="#55ff0000"android:gravity="center"android:padding="5dp" /><TextViewandroid:id="@+id/tv1"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_margin="5dp"android:layout_weight="1"android:background="#5500ff00"android:gravity="center"android:padding="5dp" /><TextViewandroid:id="@+id/tv2"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_margin="5dp"android:layout_weight="1"android:background="#550000ff"android:gravity="center"android:padding="5dp" /></LinearLayout><Buttonandroid:id="@+id/back"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:layout_below="@id/ll"android:layout_centerHorizontal="true"android:text="返回游戏向导界面" /></RelativeLayout>

【2】游戏主界面启动时将进入MainActivity调用相应方法,该部分除了对布局中声明的控件进行了初始化外,定义了Student类的对象,并就图片与Strings文件中的学号姓名对应的存放于类中对应的属性中,使用了自动可以获取资源res中对应的文件夹下的图片和学号姓名的系统方法,返回相应的id,该方法灵活、方便,如:

stu = new Student(getResources().getIdentifier("student_name" + i,"string", getPackageName()), getResources().getIdentifier("img" + i, "drawable", getPackageName()), ran.nextInt(3));

之后声明了ArrayList<Student>对象,将Student类中对应的属性存放于该集合类中,之后的操作将对集合类对象进行操作。

随机产生一张图片和三个名字的方法的核心部分代码如下:

// 更改当前数据(更改当前的三个学生,更改当前的要猜的目标学生,这些学生在装在所有的学生中)private void changeStudent() {currentList = new ArrayList<Student>();Student tempStudent;// 随机选取的学生while (currentList.size() < 3) {// 选三个放进当前的学生集合中// 从所有的学生中选取一个随机学生tempStudent = allList.get(ran.nextInt(allList.size()));if (!currentList.contains(tempStudent)) {currentList.add(tempStudent);}}// 从当前的三个选择一个currentStudent = currentList.get(ran.nextInt(currentList.size()));// 选好了适配到界面上去// 填学生的名字for (int i = 0; i < tvArray.length; i++) {tempStudent = currentList.get(i);tvArray[i].setText(getResources().getString(tempStudent.nameId));}// 填学生的照片img.setImageResource(currentStudent.drawableId);}

检查是否猜测正确的方法的代码如下:

// 检查是否猜对了private void checkStudent(View v) {TextView tv_name = (TextView) v;String currentStuName = getResources().getString(currentStudent.nameId);if (tv_name.getText().toString().equals(currentStuName)) {Toast.makeText(this, "恭喜啊^_^猜对啦!!!", 0).show();// 猜对了之后可以再猜changeStudent();} else {Toast.makeText(this, "噢噢,很遗憾您猜错了!!!", 0).show();}}

上面就是整个开发的一些核心的代码部分,具体想体验该游戏的可以到网盘下载源代码及安装到自己的手机上玩玩哦。

(下载链接:http://pan.baidu.com/s/1bnwJtIR  密码:pynm  )

五、开发过程的收获与总结:

开发过程是一个不断自我学习的过程。没有人一开始没接触一样东西就懂得怎么使用,很多时候只有自己付出了,努力过了才懂得怎么样去使用。在开发这个《猜猜看》游戏APP的过程中,让我学到最多的就是要懂得去请教别人,懂得不懂就要虚心的请教,不要高傲,自认为自己很了不起。很多时候,我们的知识能力都是有限的,在这个时候,我们就要懂得去寻求他人的帮助,在他人给予你提示之后,一方面可以让自己更加加深对某方面知识的掌握与记忆,另一方面也可以在与他人交流的过程中学习借鉴别人的学习方式以及学习到自己未了解到的知识,让自己开发出的游戏的功能更加完善、更加优化,让自己更进一步的成长。

学习是一个不断循序渐进的过程,只有自己尝试去做了,才知道实现某一个功能的难易程度。通过这次的《猜猜看》游戏,虽然自己选择开发的《猜猜看》游戏功能较简单,但是在这个简单的开发过程中对自己来说也是有很多困难和难题的。这次的开发,让我自己了解到自己能力方面还有很多的不足,还有很多对android知识点的不掌握,需要进一步去巩固基础,而对那些自己已经掌握的知识点却得到了更进一步的加深。开发过程是一个很繁琐枯燥泛味的过程,这个过程的开发可以锻炼自己的耐心,磨练一下自己的意志,只有耐得住寂寞的人才能真正实现最初自己定下的目标,哪怕目标多么渺小。

当自己开发出满足功能要求的《猜猜看》游戏时,自己的心情是无比的喜悦,因为自己终于实现了,虽然这过程要通过不断请教别人,最终来完成自己的作品,但是,当自己亲手完成自己一样没有做过的事情时,那种成功的感觉是很难用言语来表达的。这次的开发也给了我很多的鞭策:人活着就要有追求,要有目标,既然选择了去追求一样东西,既然已经定位了自己的目标,那就要坚持不懈的继续往前走下去,勇敢的往前,不要害怕前方有多少荆棘,因为你没去尝试过,你不知道自己能否成功,只有自己努力了,才会明白成功与失败是什么感觉,就算最后失败了,那又怎么样,至少曾经自己努力过。

开发过程也许很艰辛,但是不管怎么样,要永远坚信:只要你付出了,总有一天会有收获的!

《C#程序设计》猜猜看游戏开发总结相关推荐

  1. C#程序设计开发总结(猜猜看游戏开发)

    <C#程序设计>开发总结 李 杰 信息学院:物联1121:201211672114 一.课程设计的任务 设计一个猜数字游戏程序,该游戏可以由程序产生随机数字,玩家通过输入数字来匹配程序生成 ...

  2. c#课程设计---猜猜看游戏

    1:游戏要求 1. 随机显示 一个名字 与 若干张相片(如3张).选择正确的相片. 2. 记录老师对每一个学生的认识概率P.并依据认识概率,确定"猜猜看"游戏中学生出现的频率. 认 ...

  3. Rust小试牛刀之猜猜看游戏

    Time: 20190919 学习主题 直接进入Rust实践阶段,涉及到如下几个概念: let match methods associated functions 使用外部包等 新建项目 cargo ...

  4. Rust程序设计语言-猜猜看游戏

    在 Rust 中,变量默认是不可变的.下面的例子展示了如何在变量名前使用 mut 来使一个变量可变: let foo = 5; // 不可变 let mut bar = 5; // 可变 Rust 标 ...

  5. 《猜猜看》游戏的开发总结

    <猜猜看>游戏的开发总结 1.最终成果 1.1课程设计的目的 把软件工程中规范的软件开发方法应用到本次教师认识学生软件"猜猜看"的开发过程中,以经济地开发出高质量的软件 ...

  6. 《JAVA程序设计》实训第三天——《猜猜看》游戏

    基本的代码运行可以通过了.显示图片,猜猜看基本可以运行,游戏整体代码已经完成.就是统计猜对猜错次数那个还在努力,在查找中,不知能不能运行得了一个可以统计猜对猜错次数的猜猜看游戏. <pre na ...

  7. 用python玩转微信小游戏 大小猜猜看

    用python玩转微信小游戏 大小猜猜看 游戏模式 在微信小程序里搜索"大小猜猜看",即可找到该游戏. 游戏的目标比拼计算能力,找出谁大谁小,一共有40题,全部答对即挑战成功. 一 ...

  8. 关于大学,关于游戏和游戏开发

    从没想过时间会过的这么快,甚至都已经不记得在这个学校过了多少个赖床叫室友帮忙点到的早晨,过了多少低头玩手机假上课的上午,过了多少阳光正好悠闲无所事事的下午,过了多少为游戏拼杀的夜,为赶作业为未来发愁的 ...

  9. C#“猜猜看”——物联网工程1122 黄炜彬

    本次猜猜看游戏是基于Unity 3D平台进行开发,采用C scripts编写游戏脚本语言. 主要代码如下: using UnityEngine; using System.Collections; u ...

最新文章

  1. java远程线程注入_系统权限远程线程注入到Explorer.exe
  2. LInux在线安装JDK
  3. Android 通过Service单独进程模仿离线推送 Server Push
  4. try catch php 捕获,php try catch : 捕捉异常,抛出异常
  5. keep老是显示服务器开小差,nginx+keepalived高可用服务器宕机解决方案
  6. mysql uncompress_如何在php中实现mysql compress()函数
  7. 设计软件哪里找?图片素材哪里找?
  8. 2017.10.3 国庆清北 D3T2 公交车
  9. docker运行Linux性能怎么样,Docker容器OSX与Linux的性能差异
  10. apach2.2+php5.35 windows环境下安装问题解决
  11. Verge3D 2.12 for 3ds Max发布
  12. javascript进阶面向对象ES6
  13. Flutter—— 仿自如APP裸眼3D效果
  14. Spring 官方文档(中文翻译)
  15. 幸福人生在于正确选择
  16. 基于空间直方图meanshift跟踪
  17. Mybatis映射详解
  18. 《醒了自悟》--离别感言
  19. 数据压缩算法之zigZag--一种对负数友好的编码(2000多字总结)
  20. 开心,终于突破 1000 啦

热门文章

  1. python B站UP主所有视频封面下载
  2. 商品订单管理系统java_Javaweb的实例--订单管理系统--设计数据库
  3. java-IOC(控制反转) 理论推导
  4. oracle付款汇兑损益怎么产生,汇兑损益如何进行账务处理?
  5. TCGA肿瘤数据分析专题
  6. 数据中心机房建设中的关键问题都有哪些?
  7. python 的statsmodels包,计算Wald tests
  8. JAVA外卖订餐系统毕业设计 开题报告
  9. Linux Socket详解 大全 基础知识
  10. 用静息态fMRI映射人脑多巴胺能影像