『壹』 求一個安卓開發小游戲源代碼,臨時交作業用
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」的態度為客戶服務的外包,都不能算是好外包。
魔高一尺道高一丈,喜望軟體傳授了你如何見招拆招的天龍八「步」,可要好好收藏起來。其實對於我們軟體開發服務商來說,我們與客戶都是合作共贏的關系,最終是希望能幫客戶賺到錢。所以在開發過程中,雙方若是能坦誠相待,這是再好不過的啦。