android游戏源码 求一个安卓开发小游戏源代码,临时交作业用
朋友们,你是否曾想过深入了解android游戏源码和求一个安卓开发小游戏源代码,临时交作业用的内涵?在本文中,我将为你详细解析这两个话题,希望能给你带来全新的视角和思考。
游戏软件怎么查看源代码
游戏都是进行过编译,加密的无法看到源代码。如果你想查看的游戏是开源的,可以到游戏的开源网站进行查看。
查看APP应用的源代码的具体方法步骤如下:
1、首先在电脑内下载并安装获取网页源码app。
2、然后单击打开网页源码APP并在APP中的输入框内输入想要查看的网址,再在界面内找到GO选项单并单击。
3、单击后等待APP最后加载3秒就可以成功的获取APP源代码并查看了。
Android系统源代码多大
是指sdk的源码,还是android操作系统的源码,不过都有10G左右,另外sdk的源码是用git管理的,一次下载后,用gitcheck就可以切换到各个版本。
AndroidSDK是用于开发Android上JAVA应用程序的,另外发布AndroidNDK,可以添加一些C语言写的链接库,至于Linux代码,可以在Android源代码中找到(SDK程序中只有编译好的测试映像)。
应用程序开发用不到Linux代码(搞嵌入式开发才会用到,而SDK不负责底层开发)。
怎样查看 Android APP源代码
将apk文件拷贝至sdcard上。
命令顺序如下:
进入Android sdk文件夹/tools目录下
输入adb shell
输入su
输入cd data
输入cd app
这时就可以看到你安装的所有的apk文件。输入cp空格对应的apk空格/sdcard/
这样就将apk文件拷贝出来了。
将apk文件后缀直接变成rar格式,可以看到熟悉的目录结构了,
其中xml文件打开后都是二进制的,无法查看。
这时就用到了一个android4me的AXMLPrinter2工具。(请自行百度搜索)
输入以下命令,将xml文件解析出来
java-jar AXMLPrinter2.jar showtimes_list.xml
此命令是在命令行中查看此showtimes_list.xml
将showtimes_list.xml生成xml文件,则输入以下命令:
java-jar AXMLPrinter2.jar showtimes_list.xml> h.xml
目前进行到这一步,只能看到xml文件的内容,其工程中的java源文件还是看不到,看目录结构下有一个classes.dex文件,我们需要将dex文件变为jar文件。
这里用到了另一个工具dex2jar。(自行搜索下载)
在Windows下解压之后的目录如下图所示:
在命令行中,进入到此目录下:
在Windows下,输入以下命令:
dex2jar.bat c:\classes.dex
运行完之后,在C盘会多一个classes.dex.dex2jar.jar文件,此文件就是我们需要的jar文件。
利用jd-gui,将jar文件反向工程为java代码。(请自行搜索下载)
它分为Windows、Linux、和max三个版本,这里我下载的是Windows版本的。
解压之后,双击运行exe文件,选择classes.dex.dex2jar.jar文件,相应的jar文件中的Java文件就被反向工程显示出来了!
求一个安卓开发小游戏源代码,临时交作业用
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=0;i<row;i++){
canvas.drawLine(10, 50+i*stepLength, 10+(col-1)*stepLength, 50+i*stepLength, paint);
}
for(int i=0;i<col;i++){
canvas.drawLine(10+i*stepLength,50,10+i*stepLength,50+(row-1)*stepLength, paint);
}
for(int r=0;r<row;r++){
for(int c=0;c<col;c++){
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,一个类文件,别把它当成一个文件了
文章到此结束,希望我们对于android游戏源码和求一个安卓开发小游戏源代码,临时交作业用的问题能够给您带来一些启发和解决方案。如果您需要更多信息或者有其他问题,请随时联系我们。