Count Number with label

Nguồn:
– cocos2d-x and “scrolling numbers in label”
https://muahoasua.wordpress.com/2014/03/09/tao-sprite-sheets-voi-texture-packer-chi-trong-5-phut/

Tạo hiệu ứng tăng số trong 1 label là một yêu cầu thường thấy trong nhiều game, thường được sử dụng để tăng điểm, tăng xu, kết thúc màn chơi, …

Sau đây là 1 implementation đơn giản bằng việc sử dụng CCAction và thừa kế từ CCActionInterval . Ta sẽ viết lại hàm update(), các lớp CCLabelTTF, CCLabelBMFont để thực hiện công việc của mình.
Tiếp tục đọc

Advertisements

Cocos2dx – android: Implement Google Analyst basic

Bước 1: Đăng kí Google Analyst

google.com/intl/vi/analytics

Bước 2: Download SDK

 

Bước 3: Import lib build

Build Path-> Configure Build Path -> Library

Add Jar -> select libGoogleAnalystService.jar

Bước 4: Import header

import com.google.analytics.tracking.android.EasyTracker;

Bước 5: Override các method sau của Activity:

@Override
public void onStart() {
super.onStart();
EasyTracker.getInstance(this).activityStart(this); // Add this method.
}

@Override
public void onStop() {
super.onStop();
EasyTracker.getInstance(this).activityStop(this); // Add this method.
}

Bước 6: Enable một số Permission của Android

<uses-permission android:name=”android.permission.INTERNET” />
<uses-permission android:name=”android.permission.READ_PHONE_STATE” />
<uses-permission android:name=”android.permission.ACCESS_NETWORK_STATE” />

Bước 7: Định danh Account GA trong APP – Tạo 1 file XML trong thư mục res/values

<?xml version=”1.0″ encoding=”utf-8″ ?>

<resources xmlns:tools=”http://schemas.android.com/tools&#8221;
tools:ignore=”TypographyDashes”>
<!–Replace placeholder ID with your tracking ID–>
<string name=”ga_trackingId”>XX-XXXXXXX</string>

<!–Enable automatic activity tracking–>
<bool name=”ga_autoActivityTracking”>true</bool>

<!–Enable automatic exception tracking–>
<bool name=”ga_reportUncaughtExceptions”>true</bool>
</resources>

Cocos2dx – android: Implement Tapjoy

Bước 1: Download SDK & đăng kí tại:

https://dashboard.tapjoy.com

Bước 2: Import lib vào project Android

Properties -> Build Path -> Configure Build Path -> Library

Add JAR -> select tapjoyconnectlibrary.jar -> OK

Bước 3: Import thư viện

import com.tapjoy.TapjoyAwardPointsNotifier;
import com.tapjoy.TapjoyConnect;
import com.tapjoy.TapjoyConnectFlag;
import com.tapjoy.TapjoyConnectNotifier;
import com.tapjoy.TapjoyConstants;
import com.tapjoy.TapjoyDisplayAdNotifier;
import com.tapjoy.TapjoyEarnedPointsNotifier;
import com.tapjoy.TapjoyFullScreenAdNotifier;
import com.tapjoy.TapjoyLog;
import com.tapjoy.TapjoyNotifier;
import com.tapjoy.TapjoyOffersNotifier;
import com.tapjoy.TapjoySpendPointsNotifier;
import com.tapjoy.TapjoyViewNotifier;
import com.tapjoy.TapjoyViewType;

Bước 4:  Init Tapjoy :

Hashtable<String, String> flags = new Hashtable<String, String>();
flags.put(TapjoyConnectFlag.ENABLE_LOGGING, “true”);

String tapjoyAppID = “APP ID ĐƯỢC ĐĂNG KÍ TRONG TAPJOY”;
String tapjoySecretKey = “SECRECT KEY ĐĂNG KÍ TRONG TAPJOY”;

// NOTE: This is the only step required if you’re an advertiser.
TapjoyConnect.requestTapjoyConnect(getApplicationContext(), tapjoyAppID, tapjoySecretKey, flags, new TapjoyConnectNotifier()
{
@Override
public void connectSuccess() {
// Xử lý khi connect success
}

@Override
public void connectFail() {
// Xử lý khi connect fail
}
});
TapjoyConnect.getTapjoyConnectInstance().setEarnedPointsNotifier(new TapjoyEarnedPointsNotifier()
{
@Override
public void earnedTapPoints(int amount)
{

// Notify đến User khi xảy ra 1 lệnh get tap point mà số TapPoint kiếm được > 0

}
});

// Get notifications when Tapjoy views open or close.
TapjoyConnect.getTapjoyConnectInstance().setTapjoyViewNotifier(new TapjoyViewNotifier()
{
@Override
public void viewWillOpen(int viewType) {}
@Override
public void viewWillClose(int viewType) {}
@Override
public void viewDidOpen(int viewType) {}
@Override
public void viewDidClose(int viewType) {

// Xử lí khi view Offer đóng
TapjoyConnect.getTapjoyConnectInstance().getTapPoints(new TapjoyNotifier()
{
@Override
public void getUpdatePointsFailed(String error) {  }

@Override
public void getUpdatePoints(String currencyName, int pointTotal) {  }
});
}
});

Bước 5: Show Offer Tapjoy

public void showOffer(){
TapjoyConnect.getTapjoyConnectInstance().showOffers(new TapjoyOffersNotifier()
{
@Override
public void getOffersResponse() {  }

@Override
public void getOffersResponseFailed(String error) {  }
});
}

Bước 6:  Bổ sung để có thể resume Tapjoy thông qua Override method của Activity

@Override
protected void onResume()
{
super.onResume();

// Re-enable auto-refresh when we regain focus.
TapjoyConnect.getTapjoyConnectInstance().enableDisplayAdAutoRefresh(true);

// Inform the SDK that the app has resumed.
TapjoyConnect.getTapjoyConnectInstance().appResume();
}

@Override
protected void onPause()
{
super.onPause();

// Disable banner ad auto-refresh when the screen loses focus.
TapjoyConnect.getTapjoyConnectInstance().enableDisplayAdAutoRefresh(false);

// Inform the SDK that the app has paused.
TapjoyConnect.getTapjoyConnectInstance().appPause();
}

Lưu ý:

  • Đối với môi trường Test, cần add device ID để có thể test.
  • Khi muốn release thì cần email đến support của Tapjoy để có thể mở dịch vụ

[Cách sử dụng Bootstrap] Phần 3: Sử dụng slideshow image

Bước 1: Init Bootstrap (Phần 1)

Bước 2: Implement slide show

<div class=”container”>
<div id=”myCarousel” class=”carousel slide “>
<ol class=”carousel-indicators”>
<li data-target=”#myCarousel” data-slide-to=”0″ class=”active”></li>
<li data-target=”#myCarousel” data-slide-to=”1″></li>
<li data-target=”#myCarousel” data-slide-to=”2″></li>
</ol>
<!– Carousel items –>
<div class=”carousel-inner”>
<div class=”active item”>
<img src=”ITEM IMAGE 1″/>
</div>
<div class=”item”>
<img src=”ITEM IMAGE 2″/>
</div>
</div>
<!– Carousel nav –>
<a class=”carousel-control left” href=”#myCarousel” data-slide=”prev”>&lsaquo;</a>
<a class=”carousel-control right” href=”#myCarousel” data-slide=”next”>&rsaquo;</a>
</div>
</div>

Bước 3: Implement jquery auto scroll

$(document).ready(function (){
$(‘.carousel’).carousel({
interval: 2000
});
});

Bước 4: View Page

Tham khảo :

http://getbootstrap.com/2.3.2/javascript.html#carousel

[Cách sử dụng Bootstrap] Phần 2: Sử dụng Menu trong Bootstrap

Bước 1: Khởi tạo Bootstrap (bài viết trước P1)

Bước 2: Implement menu

<div class=”navbar navbar-default”>
<a class=”btn btn-navbar” data-toggle=”collapse” data-target=”.nav-collapse”>
<span class=”icon-th-list”></span></a> <!– Icon collapse–>
<div class=”nav-collapse collapse”>
<ul class=”nav nav-collapse”>
<li class=”active”><a href=”#”>Home</a></li>
<li><a href=”#”>About Us</a></li><!– Item of menu–>
<li><a href=”#”>Contact Us</a></li> <!– Item of menu–>
</ul>
</div>
</div>

Bước 3: View page

[Cách sử dụng Bootstrap] : Phần 1 Khởi tạo bootstrap

Bước 1: Download

http://getbootstrap.com/2.3.2/assets/bootstrap.zip

http://code.jquery.com/jquery-1.11.0.min.js

Bước 2: Chuẩn bị website chuẩn HTML 5 & responsive

Header:

<!DOCTYPE html>

Meta Viewport:

<meta name="viewport" content="width=device-width, user-scalable=no">

Bước 3: Nhúng bootstrap.css, bootstrap-responsive.css, bootrap.js, jquery

<link rel=”stylesheet” type=”text/css” href=”./css/bootstrap.css”>
<link rel=”stylesheet” type=”text/css” href=”./css/bootstrap-responsive.css”>

<script type=”text/javascript” src=”./js/jquery.js”></script>
<script type=”text/javascript” src=”./js/bootstrap.js”></script>

Bước 3: Bắt đầu code

 

Game Design – Retention

Mục tiêu:

*Improve retention của game Galaxy Pirates lên:

– D1 -> 50%

– D7 -> 25%

– Phân tích:

* Drop Tutorial 50% -> 40%

* Drop Level < 10 ~ 60%

* Drop Loading 15 %

Action:

* Improve Tutorial 50% -> 40%:

Version 1:

– Nhiều card girl hơn

– Độ dài < 5mins

– Tốc độ Creep nhanh hơn

Version 2: (Not yet)

– Tăng độ hoành tráng tại Step 1

 * Improve Daily Login (Fail)

* Improve Loading (Intro) 15% -> 7%

* Improve First Session:

– Add Quest Newbie

– Nhấn mạnh mục tiêu Quest

 * Improve Friend mechanics (not yet):

– Nhiều tương tác Friend hơn

 * Improve UI & game performance

* A/B test remove Intro

* Improve Event:

 – Newbie protected system cho RaidBoss & PvP

– Quest Newbie Event cho RaidBoss & PvP

To be continue ….

Một số câu hỏi entry test fresher

OOP:

  1.  giải thích về mô hình OOP
  2.  đa hình là gì ? đơn hình là gì ?
  3.  Abstract là gì ?
  4.  Interface và abstract giống và khác nhau ntn ?
  5. Tầm vực của lớp cha Parent ?
  6. Khi lớp con override method của lớp cha thì xảy ra hiện tượng ntn ? Cách khác phục ?
  7. Các phạm vi của thuộc tính và hàm trong một lớp ? Giải thích ?
  8.  Lớp Final là gì ?
  9.  Hàm final là gì ?

Web :

  1.  inclure và require giống nhau hay khác nhau
  2.  Phân biệt giữa Get và Post
  3.  Phân biệt giữa Cookie và Session
  4.  định nghĩa div
  5. Lazy loading là gì ?

IQ :

  1. bài toán 3 thầy tu và 3 con quỹ

SendKey Class

Ứng dụng : Đây là một lớp giúp ứng dụng có thể gửi đến Windows các Key của keyboard
Trực thuộc namspace :  System.Windows.Forms
Cách thức cài đặt :
Để có thể gửi một kí tự A đến Windows ta sử dụng như sau :
SendKey.Send(“A”);
Tuy nhiên , đối với 1 số phím đặc biệt như Shift ,Enter , F1 , … chúng ta có thể dựa vào bảng sau để có thể gửi kí tự một cách thích hợp