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(某些网站上排名靠前的游戏,玩了觉得一般般)
好了就这些,还有很多删了都不记得了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)