‘壹’ 求一个安卓开发小游戏源代码,临时交作业用
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,一个类文件,别把它当成一个文件了
‘贰’ 源代码交付网站好不好
好。源代码交付网站好有以下三点原因:
1、源代码交付机制可以摆脱推原厂商的依赖,用户后期的二次开发,包括表单、流程、接口等活动,都不再有后顾之忧。
2、可以实现一些复杂的业务逻辑等等,企业在新扩展的业务流程时就不需要重新购买,大大减少成本与时间。
3、基于低代码开发平台开发出来的各类业务系统不受限,可自主申请软件着作权。
‘叁’ 低代码开发平台能开发什么系统非技术人员的操作起来困难吗
想知道低代码开发平台能开发什么类型的系统和软件,先得知道低代码平台的有哪些优势,下面简搭(jabdp)就列举一些有关低代码开发平台的优势。
1、功能丰富:提供 100个左右功能套件,便企业进行使用,完全覆盖企业日常办公信息化支撑。
2、可视化配置:提供可视化的操作方式,业务部门即可进行组织架构、表单字段、流程节点、数据汇总的配置。
3、源代码交付:提供平台全部源代码给予用户作二次开发,包括表单、流程、接口、平台底层全部源代码,并提供完善的培训课程以便快速用户上手平台。不限部署数量:支持多服务器部署,且部署数量、用户数量、并发数量、软件数量均没有限制。一次采购,重复使用、多次使用,大大节省软件采购成本
低代码开发平台功能丰富,满足企业个性化需求。通过可视化配置模式快速搭建出各类应用管理系统,能够快速响应业务需求,帮助企业实现数字化管理升级。
下面整理了低代码平台快速搭建企业应用的一些典型场景。
比如:OA办公、ERP进销存、MES生产管理、CRM客户管理、项目管理、人事管理、门店管理、样单管理、订单管理、网站搭建、数据大屏、流程审批、待办工作流、问卷调查、打印模板、自动化等等。
‘肆’ 源代码不交付的小程序优缺点
优点:小程序原生开发的方式,可以保证官方的文档、视频教程、API查找规范性和系统性,并且,官方的文档也比较齐全。同时,原生开发相对于其他开发方式来说,更接近手机服务的底层逻辑。在程序出现bug时定位更加容易,方便开发者对其进行解决。
缺点:成本高,资金压力大,原生开发小程序在每个平台的语法不同,如果想在其他平台适配,需要重新开发,开发成本高。其次,虽然组件少,但开发代码量大,并且样式美观度不高,语法的灵活度也不够,开发效率相对较低。
‘伍’ APP开发流程是怎样的
APP开发流程是怎样的
APP软件开发后期的维护费用怎么算?相信很多APP软件需求方对这个问题也是非常感兴趣的。App开发公司表示,手机软件开发出来只是第一步,后期的维护也是重中之重。毕竟APP软件只有真正投入使用才能知道它到底还有哪些问题。后期维护对APP软件也是非常重要的。
2、APP软件开发后期的维护费用怎么算?
每一个APP软件都有一个持续的维护成本,虽然上线了,但是需要创建新的内容,跟踪记录应用程序运行状况,并让用户能时常去更新。每一个APP软件都需要持续的维护和内容更新,可以让用户保持愉快的心情来参与和重复使用。
‘陆’ APP开发需要什么,具体流程有哪些
APP开发需要什么,具体流程有哪些
简单点来说,要视手机PP的需求及质量而言,价位一般在几千到十几万左右,更高端的价格更高。
二、手机APP平台不同,制作成本也不一样
现在市面上流行的手机APP制作平台主要有两种一般包括两种系统:安卓系统(Android)和苹果系统(IOS)。
一般来说,制作苹果系统的手机APP软件费用要比安卓平台的贵一些,因为苹果公司对苹果平台的封闭性和手机APP开发语言Objective-C的难度,都让APP开发者加大了苹果系统手机APP开发的难度。
三、APP制作成本包含参与人员的工资
通常情况下,开发一款APP需要产品经理、客户端工程师、后端工程师和UI设计师各一名,这已经是制作手机APP应用软件比较精简的配置了,所以这些参与人员的工资也是包含在APP制作成本当中的。这些工作人员的月薪加起来可能都会超过4、5万元。
四、APP开发公司的所在地
需要注意的是,同样实力的APP开发公司,在不同的城市也会导致APP的成本费用高一些
‘柒’ 找软件外包公司做项目,需要注意什么问题
喜妹把某些外包公司开发App的套路写出来给大家提个醒!一定要注意以下五点!
套路一、虚假的知名案例
一般来说,客户和外包公司有三次现实交流的机会。
1.初步交涉:双方建立联系,外包公司自我介绍,客户阐述需求。
2.实地考察:客户亲临外包公司,看看公司规模、办公场地、员工架构。
3.达成合作:确认需求,签署合同,开始研发。
三步环环相扣,内藏杀机。
初步交涉阶段,客户会问外包公司有哪些案例,某些不靠谱的外包公司会用各种成功案例吹嘘自己,美团是我们做的,滴滴交给我们外包过,陌陌也是我们的案例......但细问之后却不能说出产品细节和开发过程。
相比之下,那些敢拿出一些自家真实开发但是不知名的成功案例给客户看的外包公司更坦诚一些,也更值得信任(毕竟没有那么多的案例可以一成而就,很多需要时间的沉淀)。
套路二、需求不明确就直接报价
一般在初步交涉时,客户就会想了解报价情况。如果外包公司在未了解清楚需求后直接脱口而出一个准确的价格,那就可以直接pass了。
因为开发一个App,小到登录方式,大到产品信息架构,不同的需求对一个项目的定价就有很大区别。在需求不明确的情况下就直接说出价格的外包公司,纯粹就是为了利用低价引诱客户。
所以,当外包公司在报价前详细的问了很多需求,这才是对客户负责的表现,这会是一个好的开始。
套路三、公司全靠销售撑着
在利用知名案例和低价忽悠之后,就进入了第二步。毕竟客户还是会持有“眼见为实,耳听为虚”的怀疑态度,需要进行实地考察,看看他们的员工配置是怎样的,有几个工程师,有几个产品经理和UI,有几个做销售的。
某些外包公司只为了多接单,并不注重技术,所以工程师的人员占比会比较少,可能连产品经理都没有。
拿最常用的登录方式这一块来举例,如果前期没考虑周全,只想到用手机验证码登录,而在后期想增加通过微信、QQ登录。其实只是一个很简单的小需求,流程逻辑是同样的,但某些外包公司就会搬出合同来说事,只要增加了需求就要求加钱。
当然也有前期低价竞标,中途高价增加需求的;也有消极怠工,粗制滥造的;还有趾高气昂,求着开发的;更有雇无经验的实习生,磕磕绊绊开发......这样开发的App和外包公司完全是个无底洞,你放心吗?
所以,针对喜妹上面讲的那五“阴”真经,客户该如何擦亮眼去识破这些套路呢?别急,喜望软件来传授你天龙八“步”。
第一步、查明真伪
当他们说哪些哪些知名案例是他们做的时,不要光听,得看他们的案例图、UI图,有上线的App就去下载下来实际操作体验一下,看看逻辑功能有没有问题、设计风格怎么样、会不会突然闪退或崩溃等等。
第一次实地考察后,还可以偷偷去突击考察,考察员工、场地。毕竟真金不怕火炼,好公司不怕突击。
第二步、明确需求
只有自己最清楚自己要什么,你的app到底需要什么风格、需要什么功能、不需要什么功能,一定要有清晰的想法。可以听听外包团队的建议,但不能完全被他们带着走了。沟通好的细节需求也一定要全部落实到需求文档还有功能清单或者原型图上,挨个确认签字。
第三步、专业产品
外包团队一定要有产品经理这一个岗位,他是客户与程序员之间最好的沟通桥梁。当客户说不清需求,程序员也听不懂需求的时候,最好的翻译就是产品经理了。
专业的他们能站在用户及客户的角度上把需求掰碎了、捋顺了传达给程序员,可以避免很多沟通和开发问题,能让app开发更顺利。
第四步、跟踪进度
客户需要清楚app的开发流程及工期安排,在正式进入项目开发之前,外包团队会对项目研发周期、提测时间、预发布时间点进行初步的判断,把项目需求划分成节点进行迭代开发计划。每个节点开发且测试完成后给客户递交周报或验收确认,然后再继续开发下一节点。
第五步、检查合同
一般都没有一次就定好的合同,在签合同之前要考虑好:项目是否按照前期原型图做、功能是否完善可用、工期安排是否合理和付款方式等。法治社会,大家都是守法的人,正规的外包公司都会跟客户签订正规的开发合同。所以之前提到过的开发方式、需求、UI、工期和款项等,都必须要在合同里有严格的规定。
第六步、定制&成品
成品app就是套用其他app的模板,这样可能就没有自己的特色,如需增加功能就得另外加钱了。而定制开发就是完全根据客户自己的需求来做,价格比成品app要高,工期也会更长。
两者各有各的优劣势,客户可以自行分析选择,但要注意的是,若是直接购买成品,对于功能模块的增减,外包公司是否能做、价格是否合理,这个需要提前沟通清楚;若选择定制开发,就要防止外包公司不按前期原型图来做,而是给你套模板。
第七步、源码交付
别以为项目开发完就完全放心了,交付也是很重要的一块。外包团队需要按照合同规定,将源码(含源码)、说明文档、操作文档等所有项目的相关资料交付给客户。
包括但不限于:
1.前后端项目的所有最新源代码(含注释)
2.数据库设计文档
3.API接口文档
4.所有的开发者账号资料
5.原型设计稿
6.UI设计稿
7.项目相关文档等资料
一定要把源码拿到自己手上,方便后期进行迭代开发及系统维护。
第八步、完整服务
完整服务是指不仅提供单纯的技术服务,同时提供包括产品设计、用户体验、技术咨询及运营维护等一系列服务。外包团队需要有一条从开发到维护的完整服务链,用专业的经验让客户少走弯路。
无论是大型的外包公司,还是小型的外包团队,凡是不能用“All In”的态度为客户服务的外包,都不能算是好外包。
魔高一尺道高一丈,喜望软件传授了你如何见招拆招的天龙八“步”,可要好好收藏起来。其实对于我们软件开发服务商来说,我们与客户都是合作共赢的关系,最终是希望能帮客户赚到钱。所以在开发过程中,双方若是能坦诚相待,这是再好不过的啦。