【Android】如何写个猜数字的小游戏

xiaoxiao2021-02-27  166

自己还是小码畜 仍然有很多很多不懂得地方 所以这个博客只能说是作为一个个人笔记本的形式存在吧 刚好最近在实训Android 就记录一点自己认为有用的小知识吧 如果有幸能够帮助到别人 那是再好不过了 废话不多说吧 小码畜今天要记录的是一个简易版的猜数字游戏 

    

搭建的环境具体如下所示 一个实体类 一个工具类 创建了Activity 以及分别对应的xml文件  实现后的运行界面如下 

      初始(开始)界面

游戏进入界面 时限为30秒 时间到了自动返回退出

    好了 上代码吧

     工具类:

package Utils; /** * Created by 4820 on 2017/6/6. */ public class AppConstants { private AppConstants(){} //标识返回方 public static final int RESULT_CODE_GAME_WIN = 11; public static final int RESULT_CODE_GAME_FAIL = 12; public static final String EXTRA_KEY_LEVEL="level"; }

    实体类:

package Bussiness; import java.util.Random; /** * Created by 4820 on 2017/6/6. */ public class Game { public static final int LEVEL_NOEMAL = 50; public static final int LEVEL_HARD = 100; private int RandomNumber; private Random random; private String Tittle; private static final int REQUEST_CODE_MENU = 10; public String getTittle() { return Tittle; } public Game(int pLevel) { random = new Random(); RandomNumber = random.nextInt(pLevel); Tittle = "请输入0—" + pLevel + "的数字"; } public String guessNumber(int pInputNumber) { if (pInputNumber > RandomNumber) { return "Your number should be smaller!"; } if (pInputNumber < RandomNumber) { return "Your number should be bigger!"; } else { return "You got it!Congratulation!"; } } }

 ActivityMain.xml

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.song.caishuzi.MainActivity"> <ImageView android:id="@+id/ig01" android:layout_width="match_parent" android:layout_height="200dp" android:src="@drawable/kaishi" /> <Button android:id="@+id/bt01" android:layout_width="150dp" android:layout_height="250dp" android:text="Normal" android:background="@color/colorPrimary" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <Button android:id="@+id/bt02" android:layout_width="150dp" android:layout_height="250dp" android:text="Hard" android:background="@color/colorPrimary" android:layout_alignTop="@+id/bt01" android:layout_alignParentRight="true" android:layout_alignParentEnd="true" android:layout_alignParentBottom="true" /> </RelativeLayout>

ActivityGame.xml

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_game" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.song.caishuzi.ActivityGame" > <TextView android:id="@+id/tv_result" android:layout_width="300dp" android:layout_height="50dp" android:text="please type your number" android:textSize="20dp" android:layout_toRightOf="@+id/tvshizhong" android:layout_toEndOf="@+id/tvshizhong" android:layout_marginLeft="13dp" android:layout_marginStart="13dp" android:layout_alignParentTop="true" /> <EditText android:id="@+id/et01" android:layout_width="500dp" android:layout_height="50dp" android:hint=" type your number" android:layout_below="@+id/tvshizhong" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_marginTop="34dp" /> <TextView android:id="@+id/tvshizhong" android:layout_width="60dp" android:layout_height="60dp" android:background="@drawable/shizhong" android:layout_alignBaseline="@+id/tv_result" android:layout_alignBottom="@+id/tv_result" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" /> <Button android:id="@+id/bt" android:layout_width="500dp" android:layout_height="50dp" android:text="give a shot" android:layout_below="@+id/et01" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_marginTop="24dp" /> </RelativeLayout>

MainActivity:

package com.song.caishuzi; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.ImageView; import Bussiness.Game; import Utils.AppConstants; public class MainActivity extends AppCompatActivity { private ImageView imageView; private Button buttonNor; private Button buttonHar; private static final int REQUEST_CODE_MENU = 10; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } private void init(){ imageView = (ImageView) findViewById(R.id.ig01); buttonNor = (Button) findViewById(R.id.bt01); buttonHar = (Button) findViewById(R.id.bt02); ButtonListener _Listener = new ButtonListener(); buttonNor.setOnClickListener(_Listener); buttonHar.setOnClickListener(_Listener); } private class ButtonListener implements View.OnClickListener{ @Override public void onClick(View v) { Intent _intent = new Intent(); _intent.setClass(getApplicationContext(),ActivityGame.class); switch (v.getId()){ case R.id.bt01: _intent.putExtra(AppConstants.EXTRA_KEY_LEVEL,Game.LEVEL_NOEMAL); break; case R.id.bt02: _intent.putExtra(AppConstants.EXTRA_KEY_LEVEL,Game.LEVEL_HARD); break; } startActivityForResult(_intent,REQUEST_CODE_MENU); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); //先判断启动方 if (requestCode == REQUEST_CODE_MENU) { if (resultCode == AppConstants.RESULT_CODE_GAME_WIN) { imageView.setImageResource(R.drawable.success); } if (resultCode == AppConstants.RESULT_CODE_GAME_FAIL) { imageView.setImageResource(R.drawable.kaishi); } } } }

ActivityGame:

package com.song.caishuzi; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.text.TextUtils; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import Bussiness.Game; import Utils.AppConstants; public class ActivityGame extends AppCompatActivity { private TextView textViewtime; private TextView textViewresult; private EditText editText; private Button button; private Game game; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_game); new TimeTask().execute(); init(); initGame(); } public void init() { textViewtime = (TextView) findViewById(R.id.tvshizhong); textViewresult = (TextView) findViewById(R.id.tv_result); button = (Button) findViewById(R.id.bt); editText = (EditText) findViewById(R.id.et01); button.setOnClickListener(new ButtonListener()); } private void initGame() { //先获取传递过来的Intent对象 Intent _intent = getIntent(); //健壮性判定 if (_intent != null) { //Intent中根据名称取出数据 int _GameLevel = _intent.getIntExtra(AppConstants.EXTRA_KEY_LEVEL, Game.LEVEL_NOEMAL); //创建游戏对象 game = new Game(_GameLevel); //更新界面 textViewresult.setText(game.getTittle()); } } private class ButtonListener implements View.OnClickListener { @Override public void onClick(View v) { String _InputText = editText.getText().toString(); if (TextUtils.isEmpty(_InputText)) { Toast.makeText(getApplicationContext(), "please type your number", Toast.LENGTH_SHORT).show(); } else { //把字符串转换为Int int _InputNumber = Integer.parseInt(_InputText); //获取比较结果 String _Result = game.guessNumber(_InputNumber); //判断是否胜利 if (_Result.equalsIgnoreCase("You got it!Congratulation!")) { setResult(AppConstants.RESULT_CODE_GAME_WIN); finish(); } else { textViewresult.setText(_Result); } editText.setText(""); } } } private class TimeTask extends AsyncTask<Void, String, Void> { @Override protected Void doInBackground(Void... params) { for (int i = 0; i < 30; i++) { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } publishProgress(i + ""); } return null; } @Override protected void onProgressUpdate(String... values) { super.onProgressUpdate(values); super.onProgressUpdate(values); //更新界面 textViewtime.setText(values[0]); } @Override protected void onPostExecute(Void aVoid) { super.onPostExecute(aVoid); { setResult(AppConstants.RESULT_CODE_GAME_FAIL); finish(); } } }

       偷个懒吧 都是直接从项目里复制粘贴过来的 希望能帮助到大家吧 

      也希望自己能坚持写博 成为一个小习惯吧 

转载请注明原文地址: https://www.6miu.com/read-13786.html

最新回复(0)