求一个安卓开发小游戏源代码,临时交作业用

求一个安卓开发小游戏源代码,临时交作业用,第1张

package com.fiveChess

import android.app.Activity

import android.os.Bundle

import android.view.Display

import android.view.Menu

import android.view.MenuItem

import android.view.Window

import android.view.WindowManager

public class MainActivity extends Activity {

GameView gameView = null

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState)

this.getWindow().requestFeature(Window.FEATURE_NO_TITLE)

this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN)

Display display = this.getWindowManager().getDefaultDisplay()

gameView = new GameView(this,display.getWidth(),display.getHeight())

setContentView(gameView)

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

menu.add("重新开始").setIcon(android.R.drawable.ic_menu_myplaces)

menu.add("退出")

return super.onCreateOptionsMenu(menu)

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

if(item.getTitle().equals("重新开始")){

gameView.canPlay = true

gameView.chess = new int[gameView.row][gameView.col]

gameView.invalidate()

}else if(item.getTitle().equals("退出")){

finish()

}

return super.onOptionsItemSelected(item)

}

}

package com.fiveChess

import android.app.AlertDialog

import android.content.Context

import android.content.DialogInterface

import android.graphics.Canvas

import android.graphics.Color

import android.graphics.Paint

import android.graphics.Paint.Style

import android.view.MotionEvent

import android.view.View

public class GameView extends View {

Context context = null

int screenWidth,screenHeight

String message = ""//提示轮到哪个玩家

int row,col //划线的行数和列数

int stepLength = 30//棋盘每格间距

int[][] chess = null//0代表没有棋子,1代表是黑棋,2代表白旗

boolean isBlack = true

boolean canPlay = true

public GameView(Context context,int screenWidth,int screenHeight) {

super(context)

this.context = context

this.screenWidth = screenWidth

this.screenHeight = screenHeight

this.message = "黑棋先行"

row = (screenHeight-50)/stepLength+1

col = (screenWidth-10)/stepLength+1

chess = new int[row][col]

}

@Override

protected void onDraw(Canvas canvas) {

super.onDraw(canvas)

Paint paint = new Paint()

paint.setColor(Color.WHITE)

canvas.drawRect(0, 0, screenWidth, screenHeight, paint)//画背景

paint.setColor(Color.BLUE)

paint.setTextSize(25)

canvas.drawText(message, (screenWidth-100)/2, 30, paint)//画最顶层的字

paint.setColor(Color.BLACK)

//画棋盘

for(int i=0i<rowi++){

canvas.drawLine(10, 50+i*stepLength, 10+(col-1)*stepLength, 50+i*stepLength, paint)

}

for(int i=0i<coli++){

canvas.drawLine(10+i*stepLength,50,10+i*stepLength,50+(row-1)*stepLength, paint)

}

for(int r=0r<rowr++){

for(int c=0c<colc++){

if(chess[r][c] == 1){

paint.setColor(Color.BLACK)

paint.setStyle(Style.FILL)

canvas.drawCircle(10+c*stepLength, 50+r*stepLength, 10, paint)

}else if(chess[r][c] == 2){

//画白棋

paint.setColor(Color.WHITE)

paint.setStyle(Style.FILL)

canvas.drawCircle(10+c*stepLength, 50+r*stepLength, 10, paint)

paint.setColor(Color.BLACK)

paint.setStyle(Style.STROKE)

canvas.drawCircle(10+c*stepLength, 50+r*stepLength, 10, paint)

}

}

}

}

@Override

public boolean onTouchEvent(MotionEvent event) {

if(!canPlay){return false}

float x = event.getX()

float y = event.getY()

int r = Math.round((y-50)/stepLength)

int c = Math.round((x-10)/stepLength)

if(r<0 || r>row-1 || c<0 || c>col-1){return false}

if(chess[r][c]!=0){return false}//若有棋子则不再画棋子了

if(isBlack){

chess[r][c] = 1

isBlack = false

message = "轮到白棋"

}else{

chess[r][c] = 2

isBlack = true

message = "轮到黑棋"

}

invalidate()

if(judge(r, c,0,1)) return false

if(judge(r, c,1,0)) return false

if(judge(r, c,1,1)) return false

if(judge(r, c,1,-1)) return false

return super.onTouchEvent(event)

}

private boolean judge(int r, int c,int x,int y) {//r,c表示行和列,x表示在y方向上的偏移,y表示在x方向上的偏移

int count = 1

int a = r

int b = c

while(r>=0 &&r<row &&c>=0 &&c<col &&r+x>=0 &&r+x<row &&c+y>=0 &&c+y<col &&chess[r][c] == chess[r+x][c+y]){

count++

if(y>0){

c++

}else if(y<0){

c--

}

if(x>0){

r++

}else if(x<0){

r--

}

}

while(a>=0 &&a<row &&b>=0 &&b<col &&a-x>=0 &&a-x<row &&b-y>=0 &&b-y<col &&chess[a][b] == chess[a-x][b-y]){

count++

if(y>0){

b--

}else if(y<0){

b++

}

if(x>0){

a--

}else if(x<0){

a++

}

}

if(count>=5){

String str = ""

if(isBlack){

str = "白棋胜利"

}else{

str = "黑棋胜利"

}

new AlertDialog.Builder(context).setTitle("游戏结束").setMessage(str).setPositiveButton("重新开始", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

chess = new int[row][col]

invalidate()

}

}).setNegativeButton("观看棋局", new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

canPlay = false

}

}).show()

return true

}

return false

}

}

PS:五子棋,无需图片,直接在程序里画出来的。注意我发的是两个文件,一个activity,一个类文件,别把它当成一个文件了

小鸟、水果忍着什么的就不用说了,想必你也玩烂了。

我推荐几个我在玩的:

1、stupidzombies(几个子d内打死所有屏幕上的僵尸,子d会在屏幕上d来d去)

2、ageofwind2(中世纪海盗游戏,出去炸翻海上的船,然后捡桶子回去卖钱,修船买新船,挺有意思,重力感应 *** 作方向,刚开始有点不熟,熟练了可以风筝n只船)

3、whackyourboss(只有20关,中文名好像叫老板的20种死法,如果你在工作,说不定你会喜欢)

4、三国杀。这个就不用说了吧

5、beats。跳舞机游戏。

6、battleheart(中文名勇者之心,打怪升级的,有法师、猎人、战士、dk、野蛮人、盗贼几种职业)

7、canknockdown(踢罐子,拿球砸罐子,有点意思)

8、where‘smywater?(鳄鱼爱洗澡)

9、三剑之舞(棒子的游戏,类似于地下城与勇士)

10、deathrally(死亡拉力赛,赛车咯)

11、游戏发展国(这个会玩上瘾的,不过很快就通关了,通关后还是可以继续玩)

12、streetball(街头篮球,挺容易的,基本上随便选一个人物都能完爆对手,我每场得分28+,盖帽18个,两双啊,哈哈)

13、skaterboy(滑板游戏)

14、cheesetower(某些网站上排名靠前的游戏,玩了觉得一般般)

好了就这些,还有很多删了都不记得了。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11339821.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存