안 드 로 이 드 지뢰 제거 게임 실현
7495 단어 Android지뢰 를 제거 하 다
효과 그림 먼저 보기:
초기 게임 인터페이스:
블록 과 태그 블록 인터페이스 열기:
게임 종료 창:
메뉴 인터페이스:
난이도 인터페이스 교체:
게임 기록 창 보기:
코드 분석
Block.java
이 부분의 코드 는 게임 인터페이스의 판 을 실현 한다.
현재 블록 이 펼 쳐 졌 는 지,현재 블록 이 지뢰 인지,현재 빨리 지뢰(즉 깃발 꽂 기)로 표시 할 지,현재 블록 주위 의 지뢰 수량 을 기록 할 지 네 개의 변 수 를 설정 합 니 다.
핵심 부분 코드:
//
public void setNumberOfSurroundingMines(int number) {
this.setBackgroundResource(R.drawable.selected);//
updateNumber(number);//
}
//
public void setMineIcon() {
this.setBackgroundResource(R.drawable.dl);
}
//
public void setFlagIcon(boolean enabled) {
if (!enabled) {
this.setBackgroundResource(R.drawable.hq);
} else {
this.setTextColor(Color.BLACK);
}
}
//
public void clearAllIcons() {
this.setText("");
this.setTextColor(R.drawable.unselected);
}
private void setBoldFont() {
this.setTypeface(null, Typeface.BOLD);
}
//
public void OpenBlock() {
if (!isCovered) {
return;
}
isCovered = false;
//
if (hasMine()) {
setMineIcon();
} else {
setNumberOfSurroundingMines(numberOfMinesInSurrounding);//
}
}
LevelActivity이 부분 은 플레이어 가 선택 한 난이도 easy 나 hard 를 Menu Activity 에 전달 합 니 다.
package com.example.saolei;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
public class LevelActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_level);
}
/* */
public void Easy(View view) {
Intent data = new Intent();
data.putExtra("result", "easy");
setResult(2, data);
finish();
}
public void Hard(View view) {
Intent data = new Intent();
data.putExtra("result", "hard");
setResult(2, data);
finish();
}
public void Return(View view) {
Intent data = new Intent();
data.putExtra("result", "");
setResult(2, data);
finish();
}
}
MenuActivity이 부분 은 메뉴 페이지 입 니 다.난이도 선택 과 게임 기록 보 기 를 포함 합 니 다.
여기 서 난이도 선택 인터페이스 에서 전 송 된 매개 변 수 를 수신 하여 메 인 인터페이스 로 전송 합 니 다.
package com.example.saolei;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Scanner;
public class MenuActivity extends AppCompatActivity {
String t = "easy";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);
}
@Override
//
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == 2) {
Intent level = new Intent();
t = data.getStringExtra("result");
level.putExtra("result", t);
setResult(1, data);
finish();
}
}
// ,
public void NewGame(View view) {
Intent data = new Intent();
data.putExtra("result", "newgame");
setResult(1, data);
finish();
}
// ,
public void ChangeLevel(View view) {
Intent level = new Intent(MenuActivity.this, LevelActivity.class);
startActivityForResult(level, 2);
}
// ,
public void Record(View view) {
String filename = getExternalCacheDir().getAbsolutePath() + "/gamerecord.txt";//
File file = new File(filename);
Scanner inputStream = null;
FileInputStream fis = null;
BufferedReader br = null;
String str;
String message = " " + " " + " " + " " + " " + "
";
// ,
if (!file.exists()) {
new AlertDialog.Builder(this)
.setMessage(" !")
.setNegativeButton(" ", null)
.create().show();
}
else {
try {
//
inputStream = new Scanner(new FileInputStream(filename));
int i = 1;
fis = new FileInputStream(filename);
br = new BufferedReader(new InputStreamReader(fis));
while ((str = br.readLine()) != null) {
message = message + (i + ". " + str + "
");
i++;
}
new AlertDialog.Builder(this)
.setMessage(message)
.setNegativeButton(" ", null)
.create().show();
fis.close();
br.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
inputStream.close();
}
}
}
// ,
public void Return1(View view) {
Intent data = new Intent();
data.putExtra("result", "start");
setResult(1, data);
finish();
}
}
MainActivity이 부분 은 게임 초기 화,뇌 구 창설,게임 승부 판정,게임 결과 의 압축 파일 등 을 포함 한 주체 내용 이다.
이 부분 은 비교적 길 어서 코드 를 붙 이지 않 겠 다
마지막 으로전체 항목 링크
더 많은 재 미 있 는 클래식 게임 을 통 해 주 제 를 실현 하고 여러분 에 게 공유 합 니 다.
C++클래식 게임 모음
python 클래식 게임 모음
python 러시아 블록 게임 집합
JavaScript 클래식 게임 을 계속 합 니 다.
자바 클래식 게임 모음
javascript 고전 게임 모음
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.