前言
這款游戲?qū)崿F(xiàn)的思路和源碼參考了Google自帶的Snake的例子,其中修改了一些個人認(rèn)為還不夠完善的地方,加入了一些新的功能,比如屏幕上的方向操作盤,暫停按鈕,開始按鈕,退出按鈕。另外,為了稍微增加些用戶體驗,除了游戲的主界面,本人自己新增了5個界面,分別是登陸界面,菜單界面,背景音樂設(shè)置界面,難度設(shè)置界面,還有個關(guān)于游戲的介紹界面。個人覺得在新手階段,參考現(xiàn)成的思路和實現(xiàn)方式是難以避免的。重要的是我們需要有自己的理解,讀懂代碼之后,需要思考代碼背后的實現(xiàn)邏輯,形成自己的思維。這樣在下次開發(fā)工作時,就不用參考別人自己也能涌現(xiàn)出解決的思路。
我覺得經(jīng)過自己的構(gòu)思和實踐,做出一個可操作有界面的小作品還是挺有成就感的,在探索和思考的過程中時間過的很快。好了,下面切入正題,我考慮了下講述的順序,決定就以進(jìn)入軟件后的界面順序來把。
由于篇幅的關(guān)系,布局的XML文件就不發(fā)了,而且我把導(dǎo)包的語句也省略了,反正像AS,eclipse這些工具都是可以智能導(dǎo)包的。
那么,首先是登陸界面,找了些網(wǎng)上的資源當(dāng)背景。布局還是比較簡單的。
下圖中,上圖為效果圖,下圖為邏輯實現(xiàn)的流程圖。


[java] view plain copy// MainActivity.java package con.example.wang.game; public class MainActivity extends Activity implements OnClickListener{ Button button; EditText edit1,edit2; CheckBox checkbox; ProgressBar bar; SharedPreferences pref; SharedPreferences.Editor editor; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button=(Button) findViewById(R.id.login_button); edit1=(EditText) findViewById(R.id.input1); edit2=(EditText) findViewById(R.id.input2); checkbox=(CheckBox) findViewById(R.id.remember_button); bar=(ProgressBar) findViewById(R.id.progress); pref= PreferenceManager.getDefaultSharedPreferences(this); boolean isRemember=pref.getBoolean("rem",false); //獲取代表是否保存密碼的變量值,這里初值設(shè)為false if(isRemember) { //如果記住密碼,則將賬號和密碼自動填充到文本框中 String account=pref.getString("account",""); String password=pref.getString("password",""); edit1.setText(account); edit2.setText(password); checkbox.setChecked(true); } button.setOnClickListener(this); } @Override public void onClick(View v){ new Thread(new Runnable(){ //開啟線程運行進(jìn)度條,減少主線程的壓力,這里不用子線程也影響不大 @Override public void run() { for (int i = 0; i < 25; i++) { int progress = bar.getProgress(); progress = progress + 10; bar.setProgress(progress); } } }).start(); String account=edit1.getText().toString(); String password=edit2.getText().toString(); if(account.equals("admin") && password.equals("123456")) { editor = pref.edit(); //這個方法用于向SharedPreferences文件中寫數(shù)據(jù) if(checkbox.isChecked()) { editor.putBoolean("rem",true); editor.putString("account",account); editor.putString("password",password); } else { editor.clear(); } editor.commit(); //這個方法必須要有,不然數(shù)據(jù)不會被保存。生效后,就可以從該文件中讀取數(shù)據(jù)。 Intent intent=new Intent(MainActivity.this,SecondActivity.class); startActivity(intent); } else{ //如果用戶名或密碼不正確,這里會彈出一個提示框 Toast.makeText(MainActivity.this,"賬號或用戶名錯誤",Toast.LENGTH_SHORT).show(); } } } 這個邏輯還算比較簡單,實現(xiàn)了記住密碼的功能,這里的數(shù)據(jù)存儲使用的是SharedPreferences。點擊登陸后,會進(jìn)入一個菜單界面,這里設(shè)置幾個四個按鈕,分別做好監(jiān)聽就可以了,然后用Intent在活動間跳轉(zhuǎn)就好了。
效果圖也分享一下。

[java] view plain copy// SecondActivity.java package com.example.wang.game; public class SecondActivity extends Activity implements OnClickListener{ ImageButton button1,button2,button3,button4; @Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); button1=(ImageButton) findViewById(R.id.button_start); button2=(ImageButton) findViewById(R.id.button_difficulty); button3=(ImageButton) findViewById(R.id.button_music); button4=(ImageButton) findViewById(R.id.button_about); button4.setOnClickListener(this); button3.setOnClickListener(this); button2.setOnClickListener(this); button1.setOnClickListener(this); } @Override public void onClick(View v){ switch(v.getId()) { //看下Intent的用法,還是挺方便的,這里用的都是顯式的方法 case R.id.button_about: Intent intent1 = new Intent(SecondActivity.this, AboutActivity.class); startActivity(intent1); break; case R.id.button_music: Intent intent2 = new Intent(SecondActivity.this, MusicActivity.class); startActivity(intent2); break; case R.id.button_difficulty: Intent intent3 = new Intent(SecondActivity.this, DifficultyActivity.class); startActivity(intent3); break; case R.id.button_start: Intent intent4 = new Intent(SecondActivity.this, GameActivity.class); startActivity(intent4); break; default: break; } } } 下面先講難度設(shè)置界面吧,這個和背景音樂開關(guān)其實差不多,所以以此為例,背景音樂開關(guān)界面就不 主站蜘蛛池模板: 平潭县| 云阳县| 庆云县| 博野县| 杨浦区| 安陆市| 柘荣县| 余庆县| 灵山县| 法库县| 安阳县| 绵阳市| 凤凰县| 花垣县| 卓资县| 锦州市| 盐津县| 南充市| 乐清市| 微博| 柳江县| 辉南县| 石狮市| 封开县| 昭通市| 繁峙县| 新蔡县| 禹州市| 勐海县| 康马县| 凭祥市| 泰来县| 临泉县| 舒兰市| 武隆县| 读书| 固原市| 新晃| 红原县| 资兴市| 石渠县|