치춘짱베리굿나이스

191211 안드로이드 슈팅게임 (최종과제) 본문

기타공부/Android

191211 안드로이드 슈팅게임 (최종과제)

치춘 2021. 2. 8. 20:36
package com.example.a1126;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.Typeface;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.SoundPool;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.Vibrator;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import java.util.ArrayList;
import java.util.Random;
public class GameActivity_ extends AppCompatActivity {
public MyView vw;
public MoveFunctions movefunc;
static SoundPool sdPool;
static int shoot, MyExpl, EnemExpl, MyHeal;
Bitmap background, MyPlane, MyMissile, MyHP, BossMissile, item1, item2, MyMissPwUp;
Bitmap me1, me2, enem1_1, enem1_2, enem2_1, enem2_2, enem3_1, enem3_2, enemmiss1, enemmiss2, enemmiss3;
Bitmap Boss1_1, Boss1_2, Boss1_3, Boss1_4, Boss1_5, Boss2_1, Boss2_2, Boss2_3, Boss2_4, Boss2_5, Boss1_6, Boss2_6;
Bitmap HP120, HP110, HP100, HP90, HP80, HP70, HP60, HP50, HP40, HP30, HP20, HP10, HP0;
ArrayList<MyMiss> MyMiss = new ArrayList<MyMiss>();
ArrayList<EnemyPlane> EnemyPl = new ArrayList<EnemyPlane>();
ArrayList<BossPlane> BossPl = new ArrayList<BossPlane>();
ArrayList<EnemMiss> EnemMiss = new ArrayList<EnemMiss>();
ArrayList<BossMiss> BossMiss = new ArrayList<BossMiss>();
ArrayList<item> Item = new ArrayList<item>();
float BGY = -400;
float myX, myY;
int count = 0;
int Enemycount = 0, spriteflag2 = 0, spriteflag3 = 0, spriteflag4 = 0, boss_dead = 0;
int score = 0;
int stage = 1;
int damageup = 1;
int damagecnt = 0;
int deathflag = 0;
double HP = 1000;
Handler myMissHandler;
Intent inIntent = getIntent();
int width;
int height;
int DPI;
int px_w;
static Vibrator vibe;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
DPI = metrics.densityDpi;
px_w = DPI / 160;
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
width = size.x;
height = size.y;
vibe = (Vibrator)getSystemService(Context.VIBRATOR_SERVICE);
Missilegame();
}
@Override
public void onBackPressed() {
//super.onBackPressed();
}
public void Missilegame(){
vw = new MyView(this);
movefunc = new MoveFunctions();
setContentView(vw);
Resources res = getResources();
sdPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 0);
shoot = sdPool.load(this, R.raw.pop, 1);
EnemExpl = sdPool.load(this, R.raw.expl, 1);
MyExpl = sdPool.load(this, R.raw.expl, 1);
MyHeal = sdPool.load(this, R.raw.heal, 1);
item1 = BitmapFactory.decodeResource(res, R.drawable.hw_buffitem);
item2 = BitmapFactory.decodeResource(res, R.drawable.hw_debuffitem);
me1 = BitmapFactory.decodeResource(res, R.drawable.hw_me1);
me2 = BitmapFactory.decodeResource(res, R.drawable.hw_me2);
enem1_1 = BitmapFactory.decodeResource(res, R.drawable.hw_enem1_1);
enem1_2 = BitmapFactory.decodeResource(res, R.drawable.hw_enem1_2);
enem2_1 = BitmapFactory.decodeResource(res, R.drawable.hw_enem2_1);
enem2_2 = BitmapFactory.decodeResource(res, R.drawable.hw_enem2_2);
enem3_1 = BitmapFactory.decodeResource(res, R.drawable.hw_enem3_1);
enem3_2 = BitmapFactory.decodeResource(res, R.drawable.hw_enem3_2);
Boss1_1 = BitmapFactory.decodeResource(res, R.drawable.hw_boss1_1);
Boss1_2 = BitmapFactory.decodeResource(res, R.drawable.hw_boss1_2);
Boss1_3 = BitmapFactory.decodeResource(res, R.drawable.hw_boss1_3);
Boss1_4 = BitmapFactory.decodeResource(res, R.drawable.hw_boss1_defeat1);
Boss1_5 = BitmapFactory.decodeResource(res, R.drawable.hw_boss1_defeat2);
Boss1_6 = BitmapFactory.decodeResource(res, R.drawable.hw_boss1_shoot);
Boss2_1 = BitmapFactory.decodeResource(res, R.drawable.hw_boss2_1);
Boss2_2 = BitmapFactory.decodeResource(res, R.drawable.hw_boss2_2);
Boss2_3 = BitmapFactory.decodeResource(res, R.drawable.hw_boss2_3);
Boss2_4 = BitmapFactory.decodeResource(res, R.drawable.hw_boss2_defeat1);
Boss2_5 = BitmapFactory.decodeResource(res, R.drawable.hw_boss2_defeat2);
Boss2_6 = BitmapFactory.decodeResource(res, R.drawable.hw_boss2_shoot);
background = BitmapFactory.decodeResource(res, R.drawable.hw_bg);
MyMissile = BitmapFactory.decodeResource(res, R.drawable.hw_mymiss);
MyMissPwUp = BitmapFactory.decodeResource(res, R.drawable.hw_mymisspwup);
BossMissile = BitmapFactory.decodeResource(res, R.drawable.bullet12x48);
enemmiss1 = BitmapFactory.decodeResource(res, R.drawable.hw_enem1_miss);
enemmiss2 = BitmapFactory.decodeResource(res, R.drawable.hw_enem2_miss);
enemmiss3 = BitmapFactory.decodeResource(res, R.drawable.hw_enem3_miss);
HP120 = BitmapFactory.decodeResource(res, R.drawable.hw_hp_120);
HP110 = BitmapFactory.decodeResource(res, R.drawable.hw_hp_110);
HP100 = BitmapFactory.decodeResource(res, R.drawable.hw_hp_100);
HP90 = BitmapFactory.decodeResource(res, R.drawable.hw_hp_90);
HP80 = BitmapFactory.decodeResource(res, R.drawable.hw_hp_80);
HP70 = BitmapFactory.decodeResource(res, R.drawable.hw_hp_70);
HP60 = BitmapFactory.decodeResource(res, R.drawable.hw_hp_60);
HP50 = BitmapFactory.decodeResource(res, R.drawable.hw_hp_50);
HP40 = BitmapFactory.decodeResource(res, R.drawable.hw_hp_40);
HP30 = BitmapFactory.decodeResource(res, R.drawable.hw_hp_30);
HP20 = BitmapFactory.decodeResource(res, R.drawable.hw_hp_20);
HP10 = BitmapFactory.decodeResource(res, R.drawable.hw_hp_10);
HP0 = BitmapFactory.decodeResource(res, R.drawable.hw_hp_0);
MyHP = HP120;
EnemyPl.add(new EnemyPlane());
HP += 100;
myMissHandler = new Handler() {
public void handleMessage(Message msg) {
if(msg.what == 0){ //MISSILE MOVE\
BGY += (2*stage);
Enemycount++;
if(BGY >= 800 * px_w){
BGY = 0;
} // 배경
if(Enemycount % 15 == 14){
if(spriteflag2 == 0){
spriteflag2 = 1;
}
else if(spriteflag2 == 1){
spriteflag2 = 0;
}
if(spriteflag3 == 0){
spriteflag3 = 1;
}
else if(spriteflag3 == 1){
spriteflag3 = 2;
}
else if(spriteflag3 == 2){
spriteflag3 = 3;
}
else if(spriteflag3 == 3){
spriteflag3 = 0;
}
if(spriteflag4 == 0 && boss_dead == 1){
spriteflag4 = 1;
}
else if(spriteflag4 == 1 && boss_dead == 1){
spriteflag4 = 2;
}
else if(spriteflag4 == 2 && boss_dead == 1){
spriteflag4 = 3;
}
}
movefunc.SpriteMove();
movefunc.EnemyAdd();
movefunc.EnemyKill();
movefunc.PlayerKill();
movefunc.ShootMiss();
movefunc.EnemyMove();
movefunc.EnemyMiss();
movefunc.BossAdd();
movefunc.BossHP();
movefunc.BossMiss();
movefunc.ItemMove();
vw.invalidate();
if(deathflag == 0) {
myMissHandler.sendEmptyMessageDelayed(0, 10);
}
}
}
};
myMissHandler.sendEmptyMessage(0);
}
public class MoveFunctions{
//스프라이트 움직이기
public void SpriteMove() {
Resources res = getResources();
switch (spriteflag2) {
case 0:
MyPlane = me1;
if (EnemyPl.size() != 0) {
for (int k = 0; k < EnemyPl.size(); k++) {
switch (EnemyPl.get(k).sprite) {
case 1:
EnemyPl.get(k).Image = enem1_1;
break;
case 2:
EnemyPl.get(k).Image = enem2_1;
break;
case 3:
EnemyPl.get(k).Image = enem3_1;
break;
}
}
}
break;
case 1:
MyPlane = me2;
if (EnemyPl.size() != 0) {
for (int k = 0; k < EnemyPl.size(); k++) {
switch (EnemyPl.get(k).sprite) {
case 1:
EnemyPl.get(k).Image = enem1_2;
break;
case 2:
EnemyPl.get(k).Image = enem2_2;
break;
case 3:
EnemyPl.get(k).Image = enem3_2;
break;
}
}
}
}
if(boss_dead == 0 && BossPl.size() != 0){
if((BossPl.get(0).HP / (stage * 1000) * 100 <= 100) && (BossPl.get(0).HP / (stage * 1000) * 100 > 92)){
BossPl.get(0).HPImage = HP120;
}
else if((BossPl.get(0).HP / (stage * 1000) * 100 <= 92) && (BossPl.get(0).HP / (stage * 1000) * 100 > 84)){
BossPl.get(0).HPImage = HP110;
}
else if((BossPl.get(0).HP / (stage * 1000) * 100 <= 84) && (BossPl.get(0).HP / (stage * 1000) * 100 > 73)){
BossPl.get(0).HPImage = HP90;
}
else if((BossPl.get(0).HP / (stage * 1000) * 100 <= 73) && (BossPl.get(0).HP / (stage * 1000) * 100 > 65)){
BossPl.get(0).HPImage = HP80;
}
else if((BossPl.get(0).HP / (stage * 1000) * 100 <= 65) && (BossPl.get(0).HP / (stage * 1000) * 100 > 57)){
BossPl.get(0).HPImage = HP70;
}
else if((BossPl.get(0).HP / (stage * 1000) * 100 <= 57) && (BossPl.get(0).HP / (stage * 1000) * 100 > 49)){
BossPl.get(0).HPImage = HP60;
}
else if((BossPl.get(0).HP / (stage * 1000) * 100 <= 49) && (BossPl.get(0).HP / (stage * 1000) * 100 > 41)){
BossPl.get(0).HPImage = HP50;
}
else if((BossPl.get(0).HP / (stage * 1000) * 100 <= 41) && (BossPl.get(0).HP / (stage * 1000) * 100 > 33)){
BossPl.get(0).HPImage = HP40;
}
else if((BossPl.get(0).HP / (stage * 1000) * 100 <= 33) && (BossPl.get(0).HP / (stage * 1000) * 100 > 25)){
BossPl.get(0).HPImage = HP30;
}
else if((BossPl.get(0).HP / (stage * 1000) * 100 <= 25) && (BossPl.get(0).HP / (stage * 1000) * 100 > 17)){
BossPl.get(0).HPImage = HP20;
}
else if((BossPl.get(0).HP / (stage * 1000) * 100 <= 17) && (BossPl.get(0).HP / (stage * 1000) * 100 > 9)){
BossPl.get(0).HPImage = HP10;
}
else if((BossPl.get(0).HP / (stage * 1000) * 100 <= 9)){
BossPl.get(0).HPImage = HP0;
}
switch(spriteflag3){
case 0:
switch(BossPl.get(0).sprite) {
case 0:
BossPl.get(0).Image = Boss1_1;
break;
case 1:
BossPl.get(0).Image = Boss2_1;
break;
}
break;
case 1:
case 3:
switch(BossPl.get(0).sprite){
case 0:
BossPl.get(0).Image = Boss1_2;
break;
case 1:
BossPl.get(0).Image = Boss2_2;
break;
}
break;
case 2:
switch(BossPl.get(0).sprite){
case 0:
BossPl.get(0).Image = Boss1_3;
break;
case 1:
BossPl.get(0).Image = Boss2_3;
break;
}
break;
}
}
else if(boss_dead == 1 && BossPl.size() != 0){
switch(spriteflag4){
case 0:
switch(BossPl.get(0).sprite){
case 0:
BossPl.get(0).Image = Boss1_6;
break;
case 1:
BossPl.get(0).Image = Boss2_6;
break;
}
case 1:
switch(BossPl.get(0).sprite){
case 0:
BossPl.get(0).Image = Boss1_4;
break;
case 1:
BossPl.get(0).Image = Boss2_4;
break;
}
break;
case 2:
switch(BossPl.get(0).sprite){
case 0:
BossPl.get(0).Image = Boss1_5;
break;
case 1:
BossPl.get(0).Image = Boss2_5;
break;
}
break;
case 3:
switch(BossPl.get(0).sprite){
case 0:
BossPl.get(0).Image = Boss1_5;
boss_dead = 2;
break;
case 1:
BossPl.get(0).Image = Boss2_5;
boss_dead = 2;
break;
}
break;
}
}
if((HP / (1000 * stage) * 100 <= 100) && (HP / (1000 * stage) * 100 > 92)){
MyHP = HP120;
}
else if((HP / (1000 * stage)* 100 <= 92) && (HP / (1000 * stage) * 100 > 84)){
MyHP = HP110;
}
else if((HP / (1000 * stage) * 100 <= 84) && (HP / (1000 * stage) * 100 > 73)){
MyHP = HP90;
}
else if((HP / (1000 * stage) * 100 <= 73) && (HP / (1000 * stage) * 100 > 65)){
MyHP = HP80;
}
else if((HP / (1000 * stage) * 100 <= 65) && (HP / (1000 * stage) * 100 > 57)){
MyHP = HP70;
}
else if((HP / (1000 * stage) * 100 <= 57) && (HP / (1000 * stage) * 100 > 49)){
MyHP = HP60;
}
else if((HP / (1000 * stage)* 100 <= 49) && (HP /(1000 * stage) * 100 > 41)){
MyHP = HP50;
}
else if((HP / (1000 * stage) * 100 <= 41) && (HP / (1000 * stage) * 100 > 33)){
MyHP = HP40;
}
else if((HP/ (1000 * stage) * 100 <= 33) && (HP / (1000 * stage) * 100 > 25)){
MyHP = HP30;
}
else if((HP / (1000 * stage) * 100 <= 25) && (HP / (1000 * stage)* 100 > 17)){
MyHP = HP20;
}
else if((HP / (1000 * stage) * 100 <= 17) && (HP / (1000 * stage) * 100 > 9)){
MyHP = HP10;
}
else if((HP / (1000 * stage) * 100 <= 9)){
MyHP = HP0;
}
}
//적 추가 및 한칸씩 땡기기
public void EnemyAdd(){
if(stage < 6){
if(Enemycount % (150 - (stage * 10)) == 149 - (stage * 10)){
for(int i = 0; i < stage; i++) {
EnemyPl.add(new EnemyPlane());
Enemycount = 0;
}
}
}
else{
if(Enemycount % 90 == 89) {
for(int i = 0; i < 5; i++) {
EnemyPl.add(new EnemyPlane());
Enemycount = 0;
}
}
}
if(EnemyPl.size() != 0 && Enemycount == 50){
for(int k = 0; k < EnemyPl.size(); k++){
EnemyPl.get(k).Enemy_moveY();
}
}
}
//보스 추가
public void BossAdd(){
if(score >= Math.pow(stage, 2) * 100 && BossPl.size() == 0){
BossPl.add(new BossPlane());
}
}
//보스 체력
public void BossHP(){
if(BossPl.size() != 0){
if(MyMiss.size() != 0) {
for (int i = 0; i < MyMiss.size(); i++) {
if ((BossPl.get(0).X - (66 * px_w) < MyMiss.get(i).X) && (BossPl.get(0).X + (66 * px_w) > MyMiss.get(i).X) &&
(BossPl.get(0).Y - (66 * px_w) < MyMiss.get(i).Y) && (BossPl.get(0).Y + (66 * px_w) > MyMiss.get(i).Y)) {
BossPl.get(0).HP -= (MyMiss.get(i).damage);
vibe.vibrate(20);
MyMiss.remove(i);
break;
}
if (BossPl.get(0).HP < 0) {
boss_dead = 1;
break;
}
}
}
if(boss_dead == 2){
BossPl.remove(0);
sdPool.play(EnemExpl, 1, 1, 0, 0, 1);
vibe.vibrate(100);
boss_dead = 0;
stage++;
HP = 1000 * stage;
}
}
}
//보스 미사일발사
public void BossMiss(){
//미사일 추가
if(stage <= 10){
if(boss_dead == 0 && BossPl.size() != 0 && (Enemycount % (30 - stage) == (29 - stage))){
BossMiss.add(new BossMiss(BossPl.get(0).X, BossPl.get(0).Y));
}
}
else if(stage > 10){
if(boss_dead == 0 && BossPl.size() != 0 && (Enemycount % 20 == 19)){
BossMiss.add(new BossMiss(BossPl.get(0).X, BossPl.get(0).Y));
}
}
//미사일 삭제
if(BossMiss.size() > 0) {
for (int i = 0; i < BossMiss.size(); i++) {
if (stage <= 10) {
BossMiss.get(i).Miss_move10();
if (BossMiss.get(i).Y2 > height) {
BossMiss.remove(i);
break;
}
}
else if (stage > 10) {
BossMiss.get(i).Miss_move20();
if (BossMiss.get(i).Y3 > height) {
BossMiss.remove(i);
break;
}
}
else if (boss_dead == 1){
BossMiss.remove(i);
break;
}
}
}
}
// 미사일이 적에 닿았는지 체크
public void EnemyKill(){
if(EnemyPl.size() > 0 && MyMiss.size() > 1) {
for (int k = 0; k < EnemyPl.size(); k++) {
int shoot_flag =0;
for (int l = 0; l < MyMiss.size(); l++) {
if ((EnemyPl.get(k).X - (32 * px_w) < MyMiss.get(l).X) && (EnemyPl.get(k).X + (32 * px_w) > MyMiss.get(l).X) &&
(EnemyPl.get(k).Y - (32 * px_w) < MyMiss.get(l).Y - (9 * px_w)) && (EnemyPl.get(k).Y + (32 * px_w) > MyMiss.get(l).Y - (9 * px_w))) {
EnemyPl.remove(k);
MyMiss.remove(l);
vibe.vibrate(50);
sdPool.play(EnemExpl, 1, 1, 0, 0, 1);
shoot_flag = 1;
score += 10;
break;
}
}
if(shoot_flag == 1){
break;
}
}
}
}
// 미사일 및 적이 나에 닿았는지 체크
public void PlayerKill(){
if(EnemMiss.size() > 0) {
for (int k = 0; k < EnemMiss.size(); k++) {
if((myX + (25 * px_w) >= EnemMiss.get(k).X) && (myX - (25 * px_w) <= EnemMiss.get(k).X) &&
(myY + (25 * px_w) >= EnemMiss.get(k).Y) && (myY - (25 * px_w) <= EnemMiss.get(k).Y)){
HP -= EnemMiss.get(k).damage;
vibe.vibrate(50);
EnemMiss.remove(k);
break;
}
}
}
if(EnemyPl.size() > 0){
for (int k = 0; k < EnemyPl.size(); k++) {
if((myX + (25 * px_w) >= EnemyPl.get(k).X) && (myX - (25 * px_w) <= EnemyPl.get(k).X) &&
(myY + (25 * px_w) >= EnemyPl.get(k).Y) && (myY - (25 * px_w) <= EnemyPl.get(k).Y)){
HP -= 100 * stage;
vibe.vibrate(50);
EnemyPl.remove(k);
break;
}
}
}
if(BossMiss.size() > 0){
if(stage <= 10) {
for (int k = 0; k < BossMiss.size(); k++) {
if (((myX + (25 * px_w) >= BossMiss.get(k).X1) && (myX - (25 * px_w) <= BossMiss.get(k).X1) &&
(myY + (25 * px_w) >= BossMiss.get(k).Y1 + (24 * px_w)) && (myY - (25 * px_w) <= BossMiss.get(k).Y1+ (24 * px_w))) ||
((myX + (25 * px_w) >= BossMiss.get(k).X2) && (myX - (25 * px_w) <= BossMiss.get(k).X2) &&
(myY + (25 * px_w) >= BossMiss.get(k).Y2+ (24 * px_w)) && (myY - (25 * px_w) <= BossMiss.get(k).Y2+ (24 * px_w))) ||
((myX + (25 * px_w) >= BossMiss.get(k).X3) && (myX - (25 * px_w) <= BossMiss.get(k).X3) &&
(myY + (25 * px_w) >= BossMiss.get(k).Y3+ (24 * px_w)) && (myY - (25 * px_w) <= BossMiss.get(k).Y3+ (24 * px_w)))) {
HP -= 50 + (30 * stage);
vibe.vibrate(50);
BossMiss.remove(k);
break;
}
}
}
else if(stage > 10) {
for (int k = 0; k < BossMiss.size(); k++) {
if (((myX + (25 * px_w) >= BossMiss.get(k).X1) && (myX - (25 * px_w) <= BossMiss.get(k).X1 ) &&
(myY + (25 * px_w) >= BossMiss.get(k).Y1+ (24 * px_w)) && (myY - (25 * px_w) <= BossMiss.get(k).Y1+ (24 * px_w))) ||
((myX + (25 * px_w) >= BossMiss.get(k).X2) && (myX - (25 * px_w) <= BossMiss.get(k).X2 ) &&
(myY + (25 * px_w) >= BossMiss.get(k).Y2+ (24 * px_w) ) && (myY - (25 * px_w) <= BossMiss.get(k).Y2+ (24 * px_w))) ||
((myX + (25 * px_w) >= BossMiss.get(k).X3 ) && (myX - (25 * px_w) <= BossMiss.get(k).X3 ) &&
(myY + (25 * px_w) >= BossMiss.get(k).Y3+ (24 * px_w)) && (myY - (25 * px_w) <= BossMiss.get(k).Y3+ (24 * px_w))) ||
((myX + (25 * px_w) >= BossMiss.get(k).X11 ) && (myX - (25 * px_w) <= BossMiss.get(k).X11 ) &&
(myY + (25 * px_w) >= BossMiss.get(k).Y11+ (24 * px_w)) && (myY - (25 * px_w) <= BossMiss.get(k).Y11+ (24 * px_w))) ||
((myX + (25 * px_w) >= BossMiss.get(k).X22 ) && (myX - (25 * px_w) <= BossMiss.get(k).X22 ) &&
(myY + (25 * px_w) >= BossMiss.get(k).Y22+ (24 * px_w)) && (myY - (25 * px_w) <= BossMiss.get(k).Y22+ (24 * px_w))) ||
((myX + (25 * px_w) >= BossMiss.get(k).X33 ) && (myX - (25 * px_w) <= BossMiss.get(k).X33 ) &&
(myY + (25 * px_w) >= BossMiss.get(k).Y33+ (24 * px_w)) && (myY - (25 * px_w) <= BossMiss.get(k).Y33+ (24 * px_w)))){
HP -= 50 + (30 * stage);
vibe.vibrate(50);
BossMiss.remove(k);
break;
}
}
}
}
if(HP < 0){
sdPool.play(MyExpl, 1, 1, 0, 0, 1);
vibe.vibrate(1000);
deathflag = 1;
Intent outIntent = new Intent(getApplicationContext(), MainActivity.class);
outIntent.putExtra("score", score);
setResult(RESULT_OK, outIntent);
finish();
}
}
// 미사일 쏘기
public void ShootMiss(){
if (MyMiss.size() != 0) {
for (int i = 0; i < MyMiss.size(); i++) {
MyMiss.get(i).Miss_move();
if (MyMiss.get(i).Y < 0) {
MyMiss.remove(i);
break; //이거 없으면 remove된 미사일을 인식 못해서 죽을수도 있음
}
}
}
}
//적기 움직임
public void EnemyMove(){
if(EnemyPl.size() != 0){
for(int j = 0; j < EnemyPl.size(); j++){
if(EnemyPl.get(j).X < 0){
EnemyPl.get(j).flag = 1;
}
else if(EnemyPl.get(j).X >= width){
EnemyPl.get(j).flag = -1;
}
if(EnemyPl.get(j).Y >= height){
EnemyPl.remove(j);
break;
}
EnemyPl.get(j).Enemy_moveX();
}
}
if(BossPl.size() != 0){
if(BossPl.get(0).X < 0){
BossPl.get(0).flag = 1;
}
else if(BossPl.get(0).X >= width){
BossPl.get(0).flag = -1;
}
if(stage < 10){
BossPl.get(0).X += (BossPl.get(0).flag * stage);
}
else{
BossPl.get(0).X += (BossPl.get(0).flag * 10);
}
}
}
//적기 미사일 쏘기
public void EnemyMiss(){
//미사일 추가
if(stage <= 20){
if(EnemyPl.size() != 0 && (Enemycount % (25 - stage) == (24 - stage))){
for(int k = 0; k < EnemyPl.size(); k++){
if(EnemyPl.get(k).X <= myX) {
EnemMiss.add(new EnemMiss(EnemyPl.get(k).X, EnemyPl.get(k).Y, 1, EnemyPl.get(k).sprite));
}
else{
EnemMiss.add(new EnemMiss(EnemyPl.get(k).X, EnemyPl.get(k).Y, 0, EnemyPl.get(k).sprite));
}
}
}
}
else if(stage > 20){
if(EnemyPl.size() != 0 && (Enemycount % 5 == 4)){
for(int k = 0; k < EnemyPl.size(); k++){
if(EnemyPl.get(k).X <= myX) {
EnemMiss.add(new EnemMiss(EnemyPl.get(k).X, EnemyPl.get(k).Y, 1, EnemyPl.get(k).sprite));
}
else{
EnemMiss.add(new EnemMiss(EnemyPl.get(k).X, EnemyPl.get(k).Y, 0, EnemyPl.get(k).sprite));
}
}
}
}
//미사일 삭제
if(EnemMiss.size() > 0) {
for (int i = 0; i < EnemMiss.size(); i++) {
EnemMiss.get(i).Miss_move();
if (EnemMiss.get(i).Y > height) {
EnemMiss.remove(i);
break;
}
}
}
}
//아이템 생성 및 움직이기
public void ItemMove(){
int n = new Random().nextInt() % 250;
if(n == 1){
Item.add(new item());
}
if(Item.size() != 0){
for(int i = 0; i < Item.size(); i++){
Item.get(i).Y += 10;
if(Item.get(i).Y >= height){
Item.remove(i);
break;
}
if((myX + (35 * px_w) >= Item.get(i).X) && (myX - (30 * px_w) <=Item.get(i).X) &&
(myY + (35 * px_w) >= Item.get(i).Y) && (myY - (30 * px_w) <= Item.get(i).Y)){
sdPool.play(MyHeal, 1, 1, 0, 0, 1);
switch(Item.get(i).state){
case 0:
if(HP < 1000 * stage - 150) {
HP += 150;
Item.remove(i);
break;
}
else{
HP = 1000 * stage;
Item.remove(i);
break;
}
case 1:
damageup = 2;
Item.remove(i);
break;
}
}
}
}
}
}
public class MyMiss {
MyMiss(float x, float y) {
X = x;
Y = y;
if(damageup == 2){
Image = MyMissPwUp;
}
else{
Image = MyMissile;
}
}
float X, Y;
Bitmap Image;
int weight = new Random().nextInt(30) + 40;
double damage = weight * (stage * 0.5) * damageup;
public void Miss_move(){
X += 0;
Y -= 10;
}
}
public class item{
item(){
X = new Random().nextInt(width - 5) + 5;
Y = 0;
int a = new Random().nextInt(10);
if(BossPl.size() != 0){
if(a < 5){
state = 0;
}
else{
state = 1;
}
}
else{
if(a < 2){
state = 1;
}
else{
state = 0;
}
}
switch(state){
case 0:
Image = item1;
break;
case 1:
Image = item2;
break;
}
}
float Y;
float X;
int state;
Bitmap Image;
}
public class EnemyPlane{
EnemyPlane(){
Resources res = getResources();
switch(sprite){
case 1:
Image = enem1_1;
case 2:
Image = enem2_1;
case 3:
Image = enem3_1;
}
}
float X = new Random().nextInt(width) - 5;
float Y = 0;
int flag = 1;
int n = new Random().nextInt(10) + 5;
int sprite = new Random().nextInt(3) + 1;
Bitmap Image;
public void Enemy_moveX(){
X += flag * n;
}
public void Enemy_moveY(){
Y += 100;
}
}
public class BossPlane {
BossPlane() {
Resources res = getResources();
switch (sprite) {
case 0:
Image = Boss1_1;
case 1:
Image = Boss2_1;
}
HPImage = HP120;
}
float X = width / 2;
float Y = 0;
int flag = 1;
double HP = stage * 1500;
int sprite = stage % 2;
Bitmap Image;
Bitmap HPImage;
}
public class EnemMiss {
EnemMiss(float x, float y, int flag, int sprite) {
Resources res = getResources();
X = x;
Y = y;
Flag = flag;
switch(sprite){
case 1:
Image = enemmiss1;
break;
case 2:
Image = enemmiss2;
break;
case 3:
Image = enemmiss3;
break;
}
if(stage < 20){
damage = new Random().nextInt(30) + (stage * 15);
}
else if(stage >= 20){
damage = new Random().nextInt(50) + 350;
}
}
float X, Y;
int Flag;
int damage;
Bitmap Image;
public void Miss_move(){
if(Flag == 1){
X += 2;
Y += 10;
}
else{
X -= 2;
Y += 10;
}
}
}
public class BossMiss{
BossMiss(float x, float y) {
X1 = x;
X2 = x;
X3 = x;
Y1 = y;
Y2 = y;
Y3 = y;
X11 = x;
X22 = x;
X33 = x;
Y11 = y;
Y22 = y;
Y33 = y;
if(stage < 20){
damage = new Random().nextInt(20) + (stage * 20);
}
else if(stage >= 20){
damage = new Random().nextInt(50) + 500;
}
}
float X1, X2, X3, Y1, Y2, Y3;
float X11, X22, X33, Y11, Y22, Y33;
int damage;
public void Miss_move10(){
X1 += 4;
X3 -= 4;
Y1 += (10 + 2* stage);
Y2 += (10 + 2*stage);
Y3 += (10 + 2*stage);
}
public void Miss_move20(){
X1 += 7;
X2 += 4;
X3 += 1;
X11 -= 1;
X22 -= 4;
X33 -= 7;
Y1 += (3 + 2 * stage);
Y2 += (6 + 2 * stage);
Y3 += (10 + 2 * stage);
Y11 += (10 + 2 * stage);
Y22 += (6 + 2 * stage);
Y33 += (3 + 2 * stage);
}
}
class MyView extends View {
public MyView(Context context) {
super(context);
}
public void onDraw(Canvas canvas) { //onDraw 함수는 시스템에 변화가 생겼을 때만 리로드된다
Paint text = new Paint();
text.setAntiAlias(true);
text.setTextSize(50);
text.setColor(Color.BLACK);
Typeface t = Typeface.create(Typeface.DEFAULT, Typeface.NORMAL);
text.setTypeface(t);
canvas.drawColor(0xFFFF9C5A);
canvas.drawBitmap(background, 0, BGY, null); //(0, Y)
canvas.drawBitmap(background, 0, BGY - (800 * px_w), null); //(0, Y+800)
canvas.drawBitmap(MyPlane, myX - (32 * px_w), myY - (32 * px_w), null);
canvas.drawBitmap(MyHP, myX - (60 * px_w), myY - (32 * px_w) - 20, null);
canvas.drawText("HP : " + HP, myX - (60 * px_w), myY - (32 * px_w) - 40, text);
canvas.drawText("Score : " + score, 0, 50, text);
canvas.drawText("Stage : " + stage, 550, 50, text);
if(EnemyPl.size() != 0){
for(int j = 0; j < EnemyPl.size(); j++){
canvas.drawBitmap(EnemyPl.get(j).Image, EnemyPl.get(j).X - (32 * px_w), EnemyPl.get(j).Y - (32 * px_w), null);
}
}
if(EnemMiss.size() != 0){
for(int k = 0; k < EnemMiss.size(); k++){
canvas.drawBitmap(EnemMiss.get(k).Image, EnemMiss.get(k).X - (9 * px_w), EnemMiss.get(k).Y - (9 * px_w), null);
}
}
if(BossPl.size() != 0){
canvas.drawBitmap(BossPl.get(0).Image, BossPl.get(0).X - (66 * px_w), BossPl.get(0).Y, null);
canvas.drawBitmap(BossPl.get(0).HPImage, BossPl.get(0).X - (60 * px_w), BossPl.get(0).Y, null);
if(BossMiss.size() != 0){
if(stage <= 10){
for(int i = 0; i < BossMiss.size(); i++){
canvas.drawBitmap(BossMissile, BossMiss.get(i).X1 - (6 *px_w), BossMiss.get(i).Y1 + (24 * px_w), null);
canvas.drawBitmap(BossMissile, BossMiss.get(i).X2 - (6 *px_w), BossMiss.get(i).Y2 + (24 * px_w), null);
canvas.drawBitmap(BossMissile, BossMiss.get(i).X3 - (6 *px_w), BossMiss.get(i).Y3 + (24 * px_w), null);
}
}
else if(stage > 10){
for(int i = 0; i < BossMiss.size(); i++) {
canvas.drawBitmap(BossMissile, BossMiss.get(i).X1 - (6 *px_w), BossMiss.get(i).Y1 + (24 * px_w), null);
canvas.drawBitmap(BossMissile, BossMiss.get(i).X2 - (6 *px_w), BossMiss.get(i).Y2 + (24 * px_w), null);
canvas.drawBitmap(BossMissile, BossMiss.get(i).X3 - (6 *px_w), BossMiss.get(i).Y3 + (24 * px_w), null);
canvas.drawBitmap(BossMissile, BossMiss.get(i).X11 - (6 *px_w), BossMiss.get(i).Y11 + (24 * px_w), null);
canvas.drawBitmap(BossMissile, BossMiss.get(i).X22 - (6 *px_w), BossMiss.get(i).Y22 + (24 * px_w), null);
canvas.drawBitmap(BossMissile, BossMiss.get(i).X33 - (6 *px_w), BossMiss.get(i).Y33 + (24 * px_w), null);
}
}
}
}
if (MyMiss.size() != 0) {
for (int i = 0; i < MyMiss.size(); i++) {
canvas.drawBitmap(MyMiss.get(i).Image, MyMiss.get(i).X - (9 * px_w), MyMiss.get(i).Y - (9 * px_w), null);
}
}
if(Item.size() != 0){
for(int i = 0; i < Item.size(); i++){
canvas.drawBitmap(Item.get(i).Image, Item.get(i).X - (10 * px_w), Item.get(i).Y - (10 * px_w), null);
}
}
}
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
if(event.getY() >= height / 2){
myY = event.getY();
}
sdPool.play(shoot, 1, 1, 0, 0, 1);
MyMiss.add(new MyMiss(myX, myY));
myX = event.getX();
damagecnt++;
if(damagecnt > 30){
damagecnt = 0;
damageup = 1;
}
invalidate();
return true;
}
if (event.getAction() == MotionEvent.ACTION_MOVE) {
count++;
if(event.getY() >= height / 2){
myY = event.getY();
}
myX = event.getX();
if(count % 20 == 0){
MyMiss.add(new MyMiss(event.getX(), event.getY()));
sdPool.play(shoot, 1, 1, 0, 0, 1);
damagecnt++;
if(damagecnt > 30){
damagecnt = 0;
damageup = 1;
}
count = 0;
}
return true;
}
return false;
}
}
}
package com.example.a1126;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;
import android.graphics.Typeface;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.SoundPool;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.preference.PreferenceManager;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.FrameLayout;
import org.json.JSONArray;
import org.json.JSONException;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
public class MainActivity extends AppCompatActivity {
public MyView titlevw;
public ranking Ranking;
static MediaPlayer player;
int score = 0;
int touchflag1 = 0, touchflag2 = 0;
float BGY = -400;
int width;
int height;
int DPI;
int px_w;
int howtoflag = 0, rankflag = 0;
String name1, name4, name5, name2, name3;
int score1, score2, score3, score4, score5;
String name6, name7, name8, name9, name10;
int score6, score7, score8, score9, score10;
Bitmap background, title, touch, howto, easter;
Handler TitleHandler;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
width = size.x;
height = size.y;
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
DPI = metrics.densityDpi;
px_w = DPI / 160;
player = MediaPlayer.create(this, R.raw.flyaway_loop);
player.setVolume(0.7f, 0.7f);
player.setLooping(true);
player.start();
Ranking = new ranking();
Ranking.load5();
Resources res = getResources();
background = BitmapFactory.decodeResource(res, R.drawable.hw_bg);
Bitmap title_ = BitmapFactory.decodeResource(res, R.drawable.hw_title);
title = Bitmap.createScaledBitmap(title_, width, 200 * (width / 480), true);
Bitmap touch_ = BitmapFactory.decodeResource(res, R.drawable.hw_touch);
touch = Bitmap.createScaledBitmap(touch_, width, 32 * (width / 400), true);
Bitmap howto_ = BitmapFactory.decodeResource(res, R.drawable.hw_howto);
howto = Bitmap.createScaledBitmap(howto_, width, 417*(width / 480), true);
Bitmap easter_ = BitmapFactory.decodeResource(res, R.drawable.hw_easteregg);
easter = Bitmap.createScaledBitmap(easter_, width, 417*(width / 480), true);
titlevw = new MyView(this);
setContentView(titlevw);
LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflater.inflate(R.layout.activity_main, null);
addContentView(v, new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT,FrameLayout.LayoutParams.MATCH_PARENT));
Button ranking_btn = v.findViewById(R.id.ranking_btn);
Button howto_btn = v.findViewById(R.id.howto_btn);
howto_btn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
if (howtoflag == 0) {
howtoflag = 1;
}
else{
howtoflag = 0;
rankflag = 0;
}
}
});
ranking_btn.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
if (rankflag== 0) {
rankflag = 1;
}
else{
howtoflag = 0;
rankflag = 0;
}
}
});
TitleHandler = new Handler(){
public void handleMessage(Message msg){
if(msg.what == 1){
BGY += 2;
touchflag1++;
if(BGY >= 800 * px_w){
BGY = 0;
} // 배경
if(touchflag1 % 50 == 49){
if(touchflag2 == 1){
touchflag2 = 0;
}
else{
touchflag2 = 1;
}
touchflag1 = 0;
}
titlevw.invalidate();
TitleHandler.sendEmptyMessageDelayed(1, 10);
}
}
};
TitleHandler.sendEmptyMessage(1);
titlevw.setOnClickListener(new MyView.OnClickListener(){
@Override
public void onClick(View view) {
if (howtoflag == 0 && rankflag == 0) {
Intent maintogame = new Intent(MainActivity.this, GameActivity_.class);
startActivityForResult(maintogame, 0);
}
else{
howtoflag = 0;
rankflag = 0;
}
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data){
if(resultCode == RESULT_OK) {
score = data.getIntExtra("score", score);
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Your Score is : " + score)
.setMessage("Do you want to continue?")
.setPositiveButton("예", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent maintogame = new Intent(MainActivity.this, GameActivity_.class);
startActivityForResult(maintogame, 0);
}
})
.setNegativeButton("아니오", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
SharedPreferences sharedPreferences = getSharedPreferences("highscore", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putInt("score", score);
editor.apply();
finishAffinity();
System.runFinalization();
System.exit(0);
}
})
.setNeutralButton("등록", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
final EditText name = new EditText(MainActivity.this);
AlertDialog.Builder ranking = new AlertDialog.Builder(MainActivity.this);
ranking.setTitle("Setting Score on Ranking")
.setMessage("Enter Your Name :")
.setView(name)
.setPositiveButton("예", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String value = name.getText().toString();
Ranking.savehighscore(value, score);
Ranking.save5();
dialog.dismiss();
}
})
.setNegativeButton("아니오", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}).setCancelable(false);
AlertDialog alertDialog = ranking.create();
alertDialog.show();
;
}
})
.setCancelable(false);
AlertDialog alertDialog = builder.create();
alertDialog.show();
}
}
class MyView extends View {
public MyView(Context context) {
super(context);
}
public void onDraw(Canvas canvas) { //onDraw 함수는 시스템에 변화가 생겼을 때만 리로드된다
Paint text = new Paint();
text.setAntiAlias(true);
text.setTextSize(50);
text.setColor(Color.BLACK);
Typeface t = Typeface.create(Typeface.DEFAULT, Typeface.NORMAL);
text.setTypeface(t);
canvas.drawColor(0xFFFF9C5A);
canvas.drawBitmap(background, 0, BGY, null); //(0, Y)
canvas.drawBitmap(background, 0, BGY - 1920 - 300, null); //(0, Y+800)
if(howtoflag == 0 && rankflag == 0) {
canvas.drawBitmap(title, 0, height / 4, null);
canvas.drawText("Highscore : " + score1, 0, 50, text);
if (touchflag2 == 0) {
canvas.drawBitmap(touch, 0, height * 4 / 5, null);
}
}
else if(howtoflag == 1 && rankflag == 0){
canvas.drawBitmap(howto, 0, height / 4, null);
}
else if(howtoflag == 0 && rankflag == 1){
canvas.drawText("Rank 1 : " + name1 + ", Score : "+ score1, 0, 50, text);
canvas.drawText("Rank 2 : " + name2 + ", Score : "+ score2, 0, 200, text);
canvas.drawText("Rank 3 : " + name3 + ", Score : "+ score3, 0, 350, text);
canvas.drawText("Rank 4 : " + name4 + ", Score : "+ score4, 0, 500, text);
canvas.drawText("Rank 5 : " + name5 + ", Score : "+ score5, 0, 650, text);
canvas.drawText("Rank 6 : " + name6 + ", Score : "+ score6, 0, 800, text);
canvas.drawText("Rank 7 : " + name7 + ", Score : "+ score7, 0, 950, text);
canvas.drawText("Rank 8 : " + name8 + ", Score : "+ score8, 0, 1100, text);
canvas.drawText("Rank 9 : " + name9 + ", Score : "+ score9, 0, 1250, text);
canvas.drawText("Rank 10 : " + name10 + ", Score : "+ score10, 0, 1400, text);
}
else{
canvas.drawBitmap(easter, 0, height / 4, null);
canvas.drawText("BGM by theFatRat", 0, height - 300, text);
canvas.drawText("sfx by Game Freak", 0, height - 250, text);
}
}
}
class ranking{
void save5(){
SharedPreferences high = getSharedPreferences("highscore", MODE_PRIVATE);
SharedPreferences.Editor editor = high.edit();
editor.putString("no1_name", name1);
editor.putString("no2_name", name2);
editor.putString("no3_name", name3);
editor.putString("no4_name", name4);
editor.putString("no5_name", name5);
editor.putString("no6_name", name6);
editor.putString("no7_name", name7);
editor.putString("no8_name", name8);
editor.putString("no9_name", name9);
editor.putString("no10_name", name10);
editor.putInt("no1_score", score1);
editor.putInt("no2_score", score2);
editor.putInt("no3_score", score3);
editor.putInt("no4_score", score4);
editor.putInt("no5_score", score5);
editor.putInt("no6_score", score6);
editor.putInt("no7_score", score7);
editor.putInt("no8_score", score8);
editor.putInt("no9_score", score9);
editor.putInt("no10_score", score10);
editor.apply();
}
void load5(){
SharedPreferences high = getSharedPreferences("highscore", MODE_PRIVATE);
name1 = high.getString("no1_name", "EE");
score1 = high.getInt("no1_score", 0);
name2 = high.getString("no2_name", "EE");
score2 = high.getInt("no2_score", 0);
name3 = high.getString("no3_name", "EE");
score3 = high.getInt("no3_score", 0);
name4 = high.getString("no4_name", "EE");
score4 = high.getInt("no4_score", 0);
name5 = high.getString("no5_name", "EE");
score5 = high.getInt("no5_score", 0);
name6 = high.getString("no6_name", "EE");
score6 = high.getInt("no6_score", 0);
name7 = high.getString("no7_name", "EE");
score7 = high.getInt("no7_score", 0);
name8 = high.getString("no8_name", "EE");
score8 = high.getInt("no8_score", 0);
name9 = high.getString("no9_name", "EE");
score9 = high.getInt("no9_score", 0);
name10 = high.getString("no10_name", "EE");
score10 = high.getInt("no10_score", 0);
}
void savehighscore(String value, int Score){
if(Score >= score1){
name10 = name9;
name9 = name8;
name8 = name7;
name7 = name6;
name6 = name5;
name5 = name4;
name4 = name3;
name3 = name2;
name2 = name1;
name1 = value;
score10 = score9;
score9 = score8;
score8 = score7;
score7 = score6;
score6 = score5;
score5 = score4;
score4 = score3;
score3 = score2;
score2 = score1;
score1 = Score;
}
else if(Score < score1 && Score >= score2){
name10 = name9;
name9 = name8;
name8 = name7;
name7 = name6;
name6 = name5;
name5 = name4;
name4 = name3;
name3 = name2;
name2 = value;
score10 = score9;
score9 = score8;
score8 = score7;
score7 = score6;
score6 = score5;
score5 = score4;
score4 = score3;
score3 = score2;
score2 = Score;
}
else if(Score < score2 && Score>= score3){
name10 = name9;
name9 = name8;
name8 = name7;
name7 = name6;
name6 = name5;
name5 = name4;
name4 = name3;
name3 = value;
score10 = score9;
score9 = score8;
score8 = score7;
score7 = score6;
score6 = score5;
score5 = score4;
score4 = score3;
score3 = Score;
}
else if(Score < score3 && Score >= score4){
name10 = name9;
name9 = name8;
name8 = name7;
name7 = name6;
name6 = name5;
name5 = name4;
name4 = value;
score10 = score9;
score9 = score8;
score8 = score7;
score7 = score6;
score6 = score5;
score5 = score4;
score4 = Score;
}
else if(Score < score4 && Score >= score5){
name10 = name9;
name9 = name8;
name8 = name7;
name7 = name6;
name6 = name5;
name5 = value;
score10 = score9;
score9 = score8;
score8 = score7;
score7 = score6;
score6 = score5;
score5 = Score;
}
else if(Score < score5 && Score >= score6){
name10 = name9;
name9 = name8;
name8 = name7;
name7 = name6;
name6 = value;
score10 = score9;
score9 = score8;
score8 = score7;
score7 = score6;
score6 = Score;
}
else if(Score < score6 && Score >= score7){
name10 = name9;
name9 = name8;
name8 = name7;
name7 = value;
score10 = score9;
score9 = score8;
score8 = score7;
score7 = Score;
}
else if(Score < score7 && Score >= score8){
name10 = name9;
name9 = name8;
name8 = value;
score10 = score9;
score9 = score8;
score8 = Score;
}
else if(Score < score8 && Score >= score9){
name10 = name9;
name9 = value;
score10 = score9;
score9 = Score;
}
else if(Score < score9 && Score >= score10){
name10 = value;
score10 = Score;
}
}
}
}

 

최종최종최최종과제는 따로있긴 했는데

성적에 크게 영향을 주는 그런과제였어서..

대충 게임내용은 말그대로 슈팅게임

기본예제는 적기 / 플레이어기 / 탄환 정도 구현되어있었고 한방 맞으면 바로 죽는 버전이었는데 게임을 하도 많이하다보니 게임 만드는데에도 오기가 생겨서

플레이어 체력바 구현 + 난이도 구현 + 보스 구현 + 하이스코어 저장기능 구현 + 도움말과 staff credit 이스터에그 버튼까지 넣어놓음

정말 크게 칭찬받은 작품.. 해당 과목 예시로 사용되지않을까 싶어용

이 과목 A+받은 것도 해당 과제가 많이 작용한듯 왜냐면 중간고사를 망쳤었거든

'기타공부 > Android' 카테고리의 다른 글

졸업작품 (Application)  (0) 2021.02.09
191008 가위바위보 게임  (0) 2021.02.08
190917 초간단 시간표앱  (0) 2021.02.08
191029 안드로이드 수업과제  (0) 2021.02.08
191119 안드로이드 수업과제  (0) 2021.02.08
Comments