Nhân hiệu SEOer

Người đăng: chisenhungsuutam on Thứ Tư, 27 tháng 8, 2014

Dạo quanh các diễn đàn SEO, thỉnh thoảng vẫn thấy các bạn lập topic thảo luận về việc: ai là cao thủ trong giới SEOer. 

Một số bạn đưa ra một vài nhân vật, một vài đánh giá, đôi khi tranh cãi, “dìm hàng”, seeding…
Bản thân mình cũng chẳng muốn “chĩa mũi” vào mấy vụ nhạy cảm này làm gì, bởi khen chê gì rồi cũng sẽ có người ghét. Bởi vậy mình sẽ không khen, cũng chẳng chê, cũng chẳng quan tâm tới “nhân vật” này, không đánh giá một “sự kiện” cụ thể kia, chỉ là “rảnh rỗi sinh nông nổi”, lạm bàn về cái Nhân hiệu SEOer. Cũng mong góp một chút sôi nổi vào cái bầu không khí SEO đang nhợt nhạt gần đây.

Nhân hiệu SEOer

Nhân hiệu là gì ?


Hỏi câu hâm dở nhiều bạn lại cười, nhưng thôi cứ nói cho ai chưa biết. Nhiều bạn nhầm với Thương hiệu. Nhưng một cái dành cho sản phẩm, một cái dành cho con người, không lẫn lộn được. Túm lại Thương – Nhân gì thì cứ tạm vo vào là mức độ nổi tiếng của một con người, một sản phẩm (dịch vụ).

Nhân hiệu được hình thành dựa trên ba yếu tố chủ chốt là:


Trình độ chuyên môn – Khả năng chia sẻ - Tính cách thuần nhất

Ba yếu tố này có thể coi như một bộ tiêu chí đế đánh giá về một cá nhân, phân biệt họ với các cá nhân khác, tránh sự cảm tính khi nhìn nhận.

Trình độ chuyên môn


Áp dụng vào trong SEO, trình độ chuyên môn chính là khả năng của SEOer dựa trên kết quả làm SEO (lên top với từ khóa, thu hút truy cập, tăng chuyển đổi, bán được hàng). Nói thì ngắn, chứ tán ra lên top với từ khóa là khó khăn với bất cứ người làm SEO nào, từ khóa không lên top mà vẫn có traffic, chuyển đổi lại là chuyện khác, chưa nói tới nhắm đúng khách hàng mục tiêu, bán hàng.

Trong thời điểm hiện tại và có lẽ về sau này, bản thân việc làm SEO không thể giải quyết được nhu cầu của khách hàng. Vì thế người làm SEO cần phải hiểu về các lĩnh vực khác trong MO, và có khả năng làm việc nhóm.

Khả năng chia sẻ


Biết là một chuyện, nhưng làm cho người khác có khả năng hiểu như mình lại là chuyện khác. Ngoài trình độ chuyên môn thì người làm SEO muốn xây dựng nhân hiệu phải có tinh thần và khả năng truyền đạt.

Đến đây nảy ra một vấn đề: vậy những người không chia sẻ,những SEOer ở ẩn thì không có nhân hiệu à ? Đúng thế!

Rất nhiều SEOer có thu nhập khủng, họ không ra mặt, không chia sẻ, họ không phải là pro ? Đừng vội vàng qui chụp như thế !

Và cũng không cần phải đỏ mặt tía tai lào vào tranh cãi làm gì. Ở đây chúng ta đang nói về Nhân hiệu, và tình thần + khả năng chia sẻ là một tiêu chí đánh giá. Tất nhiên, những cao thủ ở ẩn họ có con đường và lý tưởng riêng của họ, cái họ sở hữu đôi khi không thể đem ra chia sẻ. Hoặc đôi khi có cái tốt nhưng không đúng người, không đúng thời điểm thì hại nhiều hơn lợi. Hoặc là tốt nhưng chia sẻ một thời gian lại thành xấu. Điều này lại hay đúng trong SEO, nhiều cách hay, chia sẻ ra lại bị áp dụng thái quá, trở thành spam.

Tất nhiên có sự chia sẻ vì cộng đồng, có sự chia sẻ để làm lợi cho bản thân, có người nhìn thấy ngay, có người cần có thời gian để nhìn ra câu trả lời.

Tính cách thuần nhất


Anh ấy nhiệt tình, chia sẻ vô tư; anh ấy hay cáu gắt nhưng không để bụng đâu; ông áy ấy nói một là một, hai là hai; lão ấy giỏi mà cái mặt nhìn cứ câng câng. Hay đơn giản: anh ấy thích dép tổ ong + mũ cối, anh ấy thích comple + quần đùi, anh ấy thích màu áo xanh tình nguyện…

Tất cả là để tạo ấn tượng, tạo nên sự khác biệt. Sự khác biệt có thể đến từ trang phục, phát ngôn, tính cách… điều quan trọng là thông qua đó người ta có thể phân biệt được anh – cô – lão ấy với số đông còn lại.

Vo lại cho tròn


Tất nhiên, những người đang là CEO, Manager, Leader trong các công ty SEO, các công ty lớn có phòng SEO, những người làm đào tạo SEO, dịch vụ SEO thì cần phải có Nhân hiệu cho bản thân, xây dựng Thương hiệu cho đơn vị. Được nhiều người biết tới sẽ thuận lợi hơn trong công việc.

Các bạn đang làm SEOer tự do, hoặc nhân viên trong các công ty nhỏ cũng nên có lộ trình để xây dựng uy tín cá nhân cho mình.

Có người thích hoa, người thích hoa thơm, người thích hoa thối (miễn là hoa), người thực dụng hơn lại thích thịt bò… tất cả đều do bản thân mỗi người lựa chọn.

Chúc các bạn chọn được hướng đi cho mình, và không phải gato với nhà hàng xóm!

Nam Định, ngày mưa rảnh rỗi…
More about

Trang khảo sát kiếm tiền mới tại Việt Nam

Người đăng: chisenhungsuutam on Thứ Bảy, 23 tháng 8, 2014





Trang khảo sát kiếm tiền mới của VN cực dễ chịu đây:


- Chỉ có từ 3 --> 6 câu hỏi ngắn / 1 khảo sát nhanh với điểm thưởng từ 10đ đến 30 đ (tương đương với 1000 --> 3000 VNĐ).
-Thưởng điềm ngay sau khi khảo sát xong.
- Ngày nào cũng có vài khảo sát nhanh cho bạn tham gia. 
- Với những bản khảo sát dài thì điểm thưởng hấp dẫn hơn nhiều.
- Tăng điểm cực nhanh.

- Đổi điểm lấy thẻ cào điện thoại khi bạn đạt 500đ ( tương đương với 50.000VNĐ) 
Ai muốn tham gia thì hãy vào trang này để đăng kí thành viên nhé:https://qand.me/panelist/home
* Lưu ý:  khi tham gia bạn phải nhập email của người giới thiệu thì mới tham gia được. Hãy nhập email giới thiệu của mình là :ngangiang369@gmail.com 
Chúc bạn thành công !...





More about

Cách kiếm tiền từ bán Game cho điện thoại

Người đăng: chisenhungsuutam on Thứ Hai, 18 tháng 8, 2014


Thời đại ngày nay, khi mà điện thoại và các thiết bị cầm nay lên ngôi thì Game cho điện thoại cũng dần trở thành 1 thị trường béo bở cho các nhà làm game. 

Còn với bạn, bạn cũng có thể dễ dàng kiếm tiền từ bán Game cho điện thoại chỉ cần bạn có đam mê và biết cách tạo 1 blogspot thì chuyện còn lại là quá đơn giản


Việc kiếm tiền từ game mà các nhà phân phối vẫn hay làm là cách làm ra 1 game hay, sau đó gắn mã kích hoạt bằng tin nhắn, khi 1 người chơi tải game về và kích hoạt game thì họ sẽ bị trừ 1 số tiền tương ứng.

Hôm nay mình xin chia sẻ với các bạn 1 số trang có cho bạn phân phối các game của họ để bạn có thể tham gia và kiếm tiền từ đó. Đây là cách mà các bạn hoàn toàn ko cần phải bỏ ra 1 đồng vốn nào cả, tất cả cách bạn làm là bạn lấy link game và giới thiệu bạn bè, chia sẻ mọi cách để có người tải game của bạn về và kichs hoạt nó.

Đây là ví dụ về 1 blogspot kiếm tiền bằng cách bán game cho điện thoại: Tải Game iWin mới nhất

Bạn đầu tiên vào trang https://mwork.vn và đăng ký 1 tài khoản


Bạn điền thông tin bao gồm 1 tài khoản Gmail
Sau khi đăng ký thành công bạn sẽ nhận được thông báo:


Bạn vào mail và kích hoạt tài khoản.
Sau khi kích hoạt bạn điền đầy đủ thông tin vào form yêu cầu của trang web

Vậy là đã xong, bạn vào và cập nhật đầy đủ thông tin tài khoản của mình nhé.

Lấy link phân phối bán lấy tiền

Bạn đăng nhập vào tài khoản của mình, nhấn vào tab Việc Hay


Tại đây các bạn sẽ được phân phối các hình thức như game onine, offline, ứng dụng...
Các bạn sẽ tham gia cái nào cũng được, tùy theo thế mạnh và khá năng của mình, còn mình lấy ví dụ bằng kinh doanh game online
khi nhấp vào mục bán game online bạn sẽ nhận được rất nhiều game hay mà bạn tha hồ lấy link phân phối.

Bạn chọn 1 game và nhấp vào phần Tham gia bán



Ở đây website sẽ cho bạn lựa chọ cách mà bạn có thể dễ dàng tiếp thị hay giới thiệu game của mình, bạn coppy link và đi giới thiệu bạn bè, spam fb... miễn sao có ng tải game của bạn và kích hoạt bạn sẽ có tiền.

Quá dễ để kiếm tiền từ Game cho điện thoại phải không nào, càng giới thiệu được nhiều người thì bạn càng có cơ hội trở thành 1 nhà triệu phú đó. Chúc bạn thành công

More about

Tùy biến Comment cho blogspot, khung bình luận đẹp blogspot

Người đăng: chisenhungsuutam on Thứ Năm, 14 tháng 8, 2014

Bạn quá nhàm chán với khung Comment của blogspot, bạn cũng đang chán với Comment của Facebook rồi, bạn muốn làm mới Style comment blog của bạn 1 cách chuyên nghiệp hơn. vậy bài viết sau đây sẽ làm bài hài lòng nhất.

Tùy biến Comment cho blogspot

Nói tùy biến không phải, đây chỉ là 1 Plugin hỗ trợ cho comment blogspot 1 cách chuyên nghiệp hơn, đặc biệt là những blog về tin tức, thủ thuật thì đây là 1 Plugin bạn không thể bỏ qua. Chắc hẳn các bạn đã từng vào trang Dantri.com.vn để đọc tin tức rồi đúng không, khi đến cuối bài bạn để ý có 1 khung comment rất đẹp và cũng rất chuyên nghiệp nữa, Plugin mình giới thiệu sau đây cũng tương tự như vậy.


Đây là kết quả khi bạn làm thành công trên Blogspot của bạn.
Nó có đầy đủ chức năng như trả lời, đánh giá, sắp xếp bình luận, like, dislike, đăng nhập bằng Twitter, ....
Còn đây là phần quản trị trực quan cho các comment trên blogspot của bạn.
Bạn có thể xóa, chặn Ip các comment bạn không muốn cho hiển thị...
Quá tuyệt vời phải không, Thích chưa nào.

Tùy biến Comment cho blogspot, khung bình luận đẹp blogspot'

Đầu tiên bạn đăng ký 1 tài khoản tại đây http://intensedebate.com/

Sau khi đăng ký và kích hoạt mail xong, bạn vào phần quản trị >> Sites >> Add blog/site và thêm Blog của bạn vào

Thêm địa chỉ Blogspot muốn chèn Comment vào

Qua bước cài đặt trang web sẽ yêu cầu bạn Backup/Restore template blogspot mà bạn muốn chèn comment vào.

Bạn vào phần quản trị blog >> mẫu >> sao lưu và khôi phục >> Bạn upload lên trang Intensedebate như yêu cầu

Tới bước này website sẽ cung cấp cho bạn 1 khung code html, bạn copy toàn bộ và thay thế cho html Blogspot của bạn


Lưu lại và hoàn thành

Chú ý: Bạn có thể tùy chỉnh khung comment trong blogspot của bạn bằng cách vào phần setting và tùy chỉnh những gì mình thích trong đó. bạn có thể chuyển qua ngôn ngữ Việt Nam nếu thích

Rất đơn giản phải không, Với khung comment đẹp cho blogspot này nhìn blog của bạn sẽ rất chuyên nghiệp và đẹp nữa đấy, Chúc bạn thành công.

Nếu bạn cần hỗ trợ gì, cứ comment bên dưới nhé. mình sẽ hỗ trợ các bạn :))



More about

Từ điển Blogspot

Người đăng: chisenhungsuutam on Thứ Tư, 13 tháng 8, 2014

Lấy ra tiêu đề
<b:loop var='i' values='data:posts'>
<h2><data:i.title/></h2>
</b:loop>
Tiêu đề trang hiện hành
<title><data:blog.pageTitle/></title> 
Lấy Description của trang hiện hành
<data:blog.metaDescription/>
Tên tác giả
<a expr:href='data:post.authorProfileUrl' rel='author' title='author profile'>
                        <data:post.author/>
</a>
Nếu Địa chỉ url của trang hiện hành = địa chỉ trang chủ
<b:if cond='data:blog.url == data:blog.homepageUrl'> 
Nếu url trang hiện hành = trang url-bai-viet
<b:if cond='data:blog.url == "Url-bai-viet"'>

Nếu Định dạng của trang hiện tại = trang tĩnh (item // bài viết; index // Trang index; archive // Trang lưu trữ)
<b:if cond='data:blog.pageType == &quot;static_page&quot;'> 

More about

Thêm nút share ảnh lên Pinterest vào trong ảnh bài đăng blogspot

Người đăng: chisenhungsuutam


Chèn button chia sẻ ảnh lên Pinterest, Facebook hoặc Twitter, việc chia sẻ ảnh này rất có lợi khi có 1 người muốn chia sẻ ảnh của bạn mà không cần phải thao tác nhiều lần. Việc này cũng giúp blog của bạn chuyên nghiệp hơn.

Demo:
Cách làm: Mẫu >> Chỉnh sửa html >> sau đó tìm với từ khóa </head> hoặc </body>, chèn đoạn code sau vào trước nó.

<script type="text/javascript">(function(features){var d=document,s=d.createElement('script');s.src='http://widget.symphonytools.com/widget/js/symphony.js';s.type='text/javascript';s.async='true';s.onload=s.onreadystatechange=function(){var rs=this.readyState;if (!rs || /loaded|complete/.test(rs)) try{symphony.init(features);}catch(e){}};var sc=d.getElementsByTagName('script')[0];sc.parentNode.insertBefore(s,sc);})();</script>

Kiểu 2

<!-- Please call pinit.js only once per page -->
<script type="text/javascript" async="async" data-pin-hover="true" src="//assets.pinterest.com/js/pinit.js"></script>

Lưu lại và kiểm tra.



More about

Các loại Thẻ data trong blogspot

Người đăng: chisenhungsuutam


Các loại Thẻ data trong blogspot là gì? cách sử dụng các loại Thẻ data trong blogspot như thế nào trong lập trình blosgpot

>> Thẻ data là thẻ được Google cung cấp để lấy hầu như toàn bộ thông tin cần thiết tại blog của chúng ta mà chúng ta nhập vào hoặc thiết lập như, bài viết, tiêu đề, địa chỉ url của bài viết, hình ảnh, ... và rất nhiều cái khác nữa. Thẻ data được sử dụng trong widget (tiện ích) nào sẽ lấy ra thông tin, tại widget đó.

Cú pháp sử dụng thẻ data
Đối với từng loại widget, thì có từng kiểu dữ liệu được lấy ra. Có 2 định dạng thẻ data có thể sử dụng

<data:tên/>

hoặc

<data:tên1.tên2/>

tên,tên1: là tên dữ liệu cần lấy ra ví dụ
<data:title/> // Lấy ra tiêu đề widget hiện tại
tên2: là tên nằm trong danh sách dữ liệu có thể lấy ra của tên1 ví dụ
<data:photo.url/> // Lấy ra địa chỉ hình ảnh
Danh sách dữ liệu của từng widget
Dưới đây là toàn bộ danh sách dữ liệu có thể lấy ra từ blog của chúng ta.

Globally Available Data (Dữ liệu có sẵn)
Page Header (Tiêu đề Trang)
Blog Posts (Bài đăng trên Blog)
Blog Archives (Lưu trữ Blog)
Profile (Hồ sơ)
Text / HTML / JavaScript
Feed (Nguồn cấp)
Picture (Hình ảnh)
Labels (Nhãn)
List (Danh sách)
Link List (Danh sách Liên kết)
Logo

Globally Available Data (Dữ liệu có sẵn)

Không giống như những loại data của thẻ widget khác, những cái bạn thấy ở đây có thể sử dụng ở bất cứ đâu trong template của bạn. Lưu ý, bạn phải thêm "blog" là dữ liệu đầu để lấy ra thông tin, ví dụ như <data:blog.title/>, v.v..

title: Tiêu đề của blog.
pageType: Định dạng của trang hiện tại. Là 'item', 'archive', hoặc 'index'.
url: Địa chỉ url của trang hiện hành.
homepageUrl: Địa chỉ trang chủ.
pageTitle: Tiêu đề của trang hiện hành. Bình thường nó sẽ vẫn là tiêu đề của blog, nhưng có thể có thêm thông tin của bài viết hoặc trang lưu trữ.
encoding: Bộ mã sử dụng cho blog, ví dụ UTF-8.
languageDirection: Một trong 2 "ltr" hoặc "rtl" tương ướng với ngôn ngữ left-to-right (viết từ tráng sang phải) right-to-left (từ phải sang trái).
feedLinks: Tự động nhận dạng feed links.

Page Header (Tiêu đề Trang)

Đây là một widget đơn giản chỉ gồm 2 dữ liệu. Bạn có thể đơn giản gọi nó như sau <data:title/> và <data:description/>.

title: Tiêu đề của blog.
description: Mô ta của blog.

Blog Posts (Bài đăng trên Blog)

Đây là thành phần chính của mọi blog, và dữ liệu thì khá là phức tạp. Mình xin nhắc lại là nó khá là phức tạp, do dó ai muốn tự tay viết lại tiện ích này thì nên tham khảo kỹ ở các template khác trước xem họ viết như thế nào. Nói thế thôi, dưới đây là danh sách dữ liệu trong widget này.

feedLinks: Danh sách feed của trang. Nếu ở trang chủ, feed này chỉ chứa bài viết; Còn nếu ở trang bài viết, nó sẽ chứa thêm cả phần feed của nhận xét. Trong mục này gồm có:
url: Địa chỉ URL của feed.
name: Tên của feed (v.d. 'Bài đăng' hoặc 'Nhận xét').
feedType: Kiểu dữ liệu của feed (Atom hoặc RSS).
mimeType: Định dạng của feed.
olderPageUrl: Nếu có bài viết cũ hơn bài viết hiện tại đang xem, đây sẽ là địa chỉ URL đến bài viết đó. Cái này chỉ xuất hiện tại trang bài viết.
olderPageTitle: Tiêu đề của bài viết cũ hơn.
newerPageUrl: Tương tự với olderPageUrl, nhưng ngược lại, đây là địa chỉ bài viết mới hơn.
newerPageTitle: Tiêu đề bài viết mới hơn.
commentLabel: Cụm từ bạn thiết lập cho nhận xét (Bố cục >> Chỉnh sửa Bài đăng trên Blog bạn sẽ thấy) v.d. "Nhận xét"
authorLabel: Cụm từ bạn thiết lập cho bài đăng, v.d. "Được đăng bởi"
timestampLabel: Cụm từ bạn thiết lập cho thời gian đăng bài, v.d. "vào lúc"
postLabelsLabel: Cụm từ giới thiệu về nhãn, v.d. "Nhãn:"
backlinksLabel: Cụm từ mô tả về backlinks của bài, v.d. "Các liên kết với bài này"
posts: Danh sách tất cả các bài viết. Mỗi bài viết gồm có những dữ liệu sau:
dateHeader: Ngày đăng của bài viết, chỉ xuất hiện khi bài viết đầu tiên đăng vào ngày đó.
id: Số thứ tự (ID) của bài viết.
title: Tiêu đề bài viết.
body: Nội dung của bài viết.
author: Tên của tác giả bài viết.
url: Địa chỉ cố định của bài viết.
timestamp: Thời gian đăng bài. Không giống như dateHeader, cái này xuất hiện ở mọi bài viết.
labels: Danh sách nhãn của bài viết. Nhãn lại gồm có các dữ liệu sau:
name: Tên của nhãn.
url: Địa chỉ URL của nhãn, địa chỉ này sẽ lấy ra toàn bộ bài viết co nhãn.
isLast: True hoặc false. Xem xét coi có phải nhãn cuối cùng trong danh sách (Hữu ích cho việc bỏ dấu phẩy nếu nó là nhãn cuối).
allowComments: 'True' (Đúng) nếu cho chép nhận xét tại bài.
numComments: Số lượng nhận xét tại bài viết hiện tại.
showBacklinks: Hiện backlinks cho bài viết hiện tại.
numBacklinks: Số lượng backlinks bài viết hiện tại.
addCommentUrl: Địa chỉ URL của 'thêm nhận xét' của bài viết hiện tại.
emailPostUrl: Địa chỉ URL của 'Gửi bài đăng qua Email' của bài viết hiện tại.
editUrl: Địa chỉ URL sửa bài viết hiện tại.
feedLinks: Danh sách feed của bài viết. (Khác với blog feedLinks ở đầu bài, nó có thể chứa feeds của nhận xét.) Mỗi feedLinks gồm có:
url: Địa chỉ URL của feed.
name: Tên của feed (v.d. 'Bài đăng' or 'Nhận xét').
feedType: Loại feed (Atom hay RSS).
mimeType: Định dạng của feed.
comments: Danh sách toàn bộ nhận xét của bài viết hiện tại (chỉ hiện ở trang bài viết). Dữ liệu gồm:
id: Số thứ tự ID của nhận xét.
body: Nội dung của nhận xét.
timestamp: Thời gian đăng nhận xét.
author: Tác giả của nhận xét, hoặc 'Ẩn danh'.
authorUrl: Địa chỉ URL vào hồ sơ của tác giả nhận xét, đương nhiên nếu không phải là ẩn danh.
deleteUrl: Địa chỉ URL dùng để xóa nhận xét.
isDeleted: Xem xét coi nhận xét đã bị xóa hay chưa. (Dùng để hiện chữ thay thế khi nhận xét đó đã bị xóa.)

Blog Archives (Lưu trữ Blog)

Các kiểu của Lưu trữ có thể thiết lập tại widget. Nếu bạn muốn thử thiết kế lại nó, đơn giản nhất nên sử dụng 'FLAT' (Danh sách phẳng), sau đó sử tùy chỉnh lại các thành phần còn lại.

title: Tiêu đề của widget.
style: Loại 'MENU', 'FLAT', or 'HIERARCHY'. (Thứ bậc, Danh sách phẳng, Trình đơn thả xuống)
data: Danh sách đối tượng của widget gòm có:
name: Tên khoảng thời gian lưu trữ, v.d. "tháng mười hai."
url: Địa chỉ URL với từng đối tượng thời gian lưu trữ.
post-count: Số lượng bài viết của một đối tượng.

Profile Widget (Hồ sơ)

Đối với blog chỉ có một tác giả, widget hồ sơ chứa các thông tin sau. Lưu ý rằng để truy cập vào các phần khác của dữ liệu hình ảnh, bạn sẽ sử dụng định dạng như sau <data:photo.url/>.

title: Tiêu đề của widget.
userUrl: Địa chỉ URL đến hồ sơ của tác giả.
location: Nơi ở trong hồ sơ của tác giả.
aboutme: Nội dung "Giới thiệu" lấy từ hồ sơ của tác giả.
displayname: Tên hiển thị của tác giả.
photo: Ảnh đại định của tác giả, gồm có các thành phần sau:
url: Địa chỉ URL của ảnh.
width: Chiều rộng ảnh, tính theo pixels.
height: Chiều cao của ảnh, tính theo pixels.
alt: Văn bản thay thế ảnh.

Đối giới blog có nhiều tác giả, widget hồ sơ chứa ít thông tin hơn về các tác giả của blog, gồm có.

title: Tiều đề của widget.
authors: Danh sách tất cả tác giả, gồm các thành phần sau:
displayname: Tên hiển thị của tác giả.
userURL: Địa chỉ URL đến hồ sơ của tác giả.

Nếu bạn muốn thiết kế một template (giao diện) có thể sử dụng chung cho một hoặc nhiều tác giả, bạn có thể sử dụng giá trị data:team để phân biệt trường hợp. v.d. <b:if cond='data:team=="true"'> (hiện nhiều tác giả) </b:if>

Text / HTML / JavaScript Widget

Tiêu đề của HTML/JavaScript widget chỉ gồm 2 dữ liệu.

title: Tiêu đè của widget.
content: Nội dung của widget.

Feed Widget (Nguồn cấp)

Nội dung feed được nạp một cách tự động bởi Google AJAX API sau khi được trả lại bởi trình duyệt. Chỉ có thể làm đẹp lại bằng CSS.

title: Tiêu đè của widget
feedUrl: Địa chỉ URL của feed.

Picture Widget (Hình ảnh)

Widget hình ảnh chỉ chứa một hình ảnh, và chứa các dữ liệu của ảnh đó.

title: Tiêu đề của widget.
sourceUrl: Địa chỉ URL của hình ảnh.
width: Chiều rộng ảnh, tính theo pixels.
height: Chiều cao ảnh, tính theo pixels.
caption: Caption của ảnh.

Labels Widget (Nhãn)

Widget nhãn sẽ chứa toàn bộ nhãn đang được sử dụng trên blog.

title: Tiêu đề widget.
labels: Danh sách nhãn, mỗi nhãn gồm có:
name: Tên của nhãn.
count: Số lượng bài viết của nhãn.
url: Địa chỉ URL của nhãn.

List Widget (Danh sách)

Hình thức đơn giản nhất của một danh sách. Mỗi mục chỉ chứa một thành phần duy nhấ là văn bản, mà không cần bất kỳ loại dữ liệu khác.

title: Tiêu đề widget.
items: Danh sách tất cả các mục.

Link List Widget (Danh sách liên kết)

Danh sách liên kết thì sử dụng cũng khá đơn giản, nó chỉ bao gồm 2 thành phần chỉnh: tên và địa chỉ.

title: Tiêu đề của widget.
links: Danh sách liên kết, trong nó gồm có:
name: Tên của liên kết.
target: Địa chỉ URL của liên kết.

Logo Widget

Cái đơn giản nhất trong tất cả các loại ở đây đây, chỉ có đúng một thành phần.

fullButton: Địa chỉ URL của nút mà bạn đã chọn.

Nguồn: http://www.kslzone.net/2014/01/the-la-data-la-gi-va-cach-su-dung-no.html
More about

Cách thay font chữ trong blogspot

Người đăng: chisenhungsuutam on Thứ Ba, 12 tháng 8, 2014


Hey! Chào mọi người, lâu rồi mình không viết bài cho blog, hôm nay có hứng thú nên tiếp tục chia sẻ cho các bạn 1 số thủ thuật blogspot nhỏ để tạo một blogspot đẹp
Chắc hẳn đa số các bạn khi tải 1 Template blogspot (thường là từ các trang nước ngoài) về cài đặt xong file xml, ra xem cái giao diện blog của mình nó thế nào thì thốt lên rằng...Ôi nó đẹp quá,.... nhưng sao cái font này nó lại méo mó, thậm chí là có các ô vuông, hoặc không hài lòng lắm với kiểu font như vậy? làm sao để thay đổi font chữ đây?
Cách thay font chữ trong blogspot

Mình sẽ chia sẻ cách đơn giản nhất để có thể chỉnh sửa font chữ trong blogspot. Cách này khá cơ bản chỉ cần bạn hiểu sơ qua 1 số mã css là bạn có thể chỉnh sửa tùy ý theo ý của mình.

Thay font chữ trong blogspot

(Một số thuộc tính css của font bạn có thể tham khảo ở trang sau đây: Http://www.w3schools.com/css/css_font.asp)

Để có thể sửa font cách nhanh nhất bạn có thể dùng trình duyệt Chrome  và sử dụng chức năng Developer Tools (nhấn phím 12 hoặc bấm chuột phải chọn "kiểm tra phần tử")

Bạn nhấn chuột phải vào dòng chữ cần chỉnh font >> kiểm tra phần tử
Khi đó trình duyệt của bạn sẽ hiện lên 1 khung ở dưới trình duyệt của bạn:


Ví dụ: mình muốn chỉnh font chữ của dòng chữ" Follow Share And Tricks " Trên blog Chiase-thuthuat.blogspot.com luôn nhé:

Bạn chú ý, sau khi nhấn kiểm tra phần tử , sẽ xuất hiện nay ở trong khung trên 1 đoạn code như sau:
Nhìn sang phía bên phải sẽ thấy 1 đoạn code nhỏ như thế này:

Đây chính là phần mà bạn cần thay đổi:

Ở trên font của mình sẽ hiện đang là font Tahoma và mẫu chữ sẽ là

 giờ mình sẽ chuyển qua font Times xem có gì thay đổi không: (Để đổi font bạn kick vào dòng font muốn đổi )

Giờ xem kết quả:
Bạn đã thấy sự khác nhau chưa?

Nhưng chú ý: đây chỉ là chỉnh sửa hiện thị trực quan trên trình duyệt của bạn thôi, template của bạn chưa hề thay đổi gì cả, giờ chỉ cần bạn nhấn f5 là blogs của bạn sẽ trở về ban đầu mà không hề sứt mẻ gì. Vậy nãy giờ làm công cốc à? Không ! giờ đến bước quan trọng đây.
Bạn giữ nguyên như vậy, chú ý phần mình khoanh màu xanh nhé:
Bạn copy lại, vào phần quản trị blogspot >> mẫu >> chỉnh sửa html >> nhấn ctrl + f

Khi đó nó sẽ hiện 1 khung tìm kiếm ở góc phần sửa html, dán đoạn lúc nãy đã copy và nhấn Enter

Sẽ được như hình sau:


Bạn thấy giống gì lúc nãy không? giờ bạn có thể tùy chỉnh font chữ cần sửa như ý muốn.

Khi sửa xong hãy luôn nhớ 1 điều là nhấn nút lưu mẫu để hoàn thành

Ngoài ra bạn có thể thêm 1 số thuộc tính như Font-size, font-weightm, Color.... Tùy ý đến khi thấy hài lòng.

Rất phức tạp phải không, giờ bạn đang cảm thấy hào hứng hay chán nản? Nếu hào hứng hãy share bài viết này cho bạn bè của mình, còn đang chán nản hãy comment ở dưới để mình có thể hỗ trợ.

Chúc bạn có thể dễ dàng thay font chữ trong blogspot của mình được hài lòng và hài hòa nhất.

More about

SEOer nên học thêm Google Adword

Người đăng: chisenhungsuutam

Về quê, rảnh rang chẳng có việc gì làm, học và đăng ký thi Adword chơi. Sau 02 tháng tìm hiểu cũng có được cái Giấy chứng nhận Adword.
Show hàng chút...

Cảm nhận về Google Adword


Trước đây mình có tư tưởng coi thường quảng cáo Adword, cho rằng chẳng qua là bỏ tiền ra mua. Còn SEO mới là đỉnh cao của trí tuệ.

Nhưng thật ra đó là chưa làm adword vì hiểu hời hợt về quảng cáo của Google.

Học sâu vào một chút thấy cực khó luôn, mình vừa tự học theo tài liệu của Google, tìm hiểu thêm trên mạng, tham gia tọa đàm trực tuyến, làm thẻ Visa chạy thử... mà thấy còn rất nhiều chỗ khó, chưa hiểu được.

Mình cũng không định học quá sâu, hay kiểm tiền từ công việc này. Mục đích là để hiểu hơn về MO. Ngoài ra tìm hiểu về Adword cũng rất có lợi cho SEO, nhất là về kĩ năng phân tích từ khóa.

Adword bổ trợ rất tốt cho SEO


Trước kia mình thường phân từ khóa thành dễ - trung bình - khó, tùy thuộc vào thị trường, mức độ cạnh tranh và khả năng thực tế của bản thân, điểu kiện của khách hàng để lựa chọn SEO từ đâu. Giờ thì phải phân là 4. Bên cạnh SEO luôn có Adword hỗ trợ. Một danh sách từ khóa tiềm năng: có traffic khá, giá bid thấp sẽ rất hiệu quả.

Trục trặc với Google Adword


Cái này là kinh nghiệm bản thân thôi. Lúc đầu mình tạo quảng cáo, mãi chẳng chạy, lại bảo do: Chính sách nội dung. Nghĩ chắc tại nội dung nghèo nàn, tháng sau làm lại, vẫn thế. Tức khí viết phản hồi thì có điện thoại từ Singapo (nhân viên của Google) gọi qua support. Đại ý bảo: không hiểu blog của mình mục đich là gì, rồi kêu thêm số điện thoại, rồi kêu bỏ câu thơ này đi.

Hỡi anh mê đắm thể thao
Em đây giữ giá làm cao chờ chàng
Blog show đủ thứ hàng
Ghế - xe - xà -tạ... chờ chàng qua chơi !

Mình thử nghiệm Google Adword trên một blog thể thao mà.

1. OK, thêm số điện thoại
2. "Thơ thì không bỏ được, đó là dạng thơ gần như bút tre, Google nên tôn trọng văn hóa địa phương."

sau 2 cuộc điện thoại nữa, cuối cùng Google cũng cho hiển thị, vậy là có cái để mà vọc. Adword mà còn thế chẳng trách gì Adsense lại khoai.

Google Adword - Thông tin thêm cho bạn nào chưa biết


Adword hiện có các kì thi chứng nhận sau:

- Cơ bản (cái này mình qua rồi, giờ ko cấp chứng chỉ cho cái này nữa)
- Tìm kiếm nâng cao (là cái chững chỉ của mình ở trên đó)
- Hiển thị nâng cao (đang ngâm cứu)
- Video Quảng cáo (đang ngâm cứu)

Ngoài ra các bạn nên đăng ký Google partner ( https://www.google.com/partners/ ) để được nhận thông tin, tài liệu của Google thường xuyên. 

Hiện 01 tháng Google Adword tổ chức 2 lần tọa đàm trực tiếp về Adword vào giữa và cuối tháng, từ 11 - 12h cho Google Partner.

Các bạn cũng lên làm một thẻ Visa để vừa học vừa thực hành, sẽ cho hiệu quả cao hơn.
More about

12 thói quen mà các CEO thường làm trước bữa sáng

Người đăng: chisenhungsuutam on Chủ Nhật, 10 tháng 8, 2014

12 thói quen mà các CEO thường làm trước bữa sáng  

1. Thức dậy sớm
Một cuộc thăm dò được thực hiện bởi nhóm nghiên cứu Vanderkam, thuộc học Florida, Mỹ với 20 giám đốc điều hành đã nhận được câu trả lời rằng 90% trong số họ thức dậy trước 6 giờ sáng các ngày trong tuần.
Giám đốc điều hành PepsiCo Indra Nooyi thường thức dậy lúc 4 giờ sáng và luôn đến văn phòng trước 7 giờ. Trong khi đó, Giám đốc điều hành Disney Bob Iger dậy lúc 4 giờ 30 sáng để đọc và Giám đốc điều hành Square Jack Dorsey dậy lúc 5 giờ 30 để chạy bộ .
2. Tập thể dục buổi sáng
Theo Vanderkam, Giám đốc điều hành Xerox Ursula Burns thường có hai buổi tập thể dục cá nhân một tuần, mỗi buổi kéo dài một giờ bắt đầu từ lúc 6 giờ sáng. Giám đốc điều hành Christies Steve Murphy thường tập yoga vào buổi sáng.
Họ thường tập thể dục vào buổi sáng vì hầu hết thời gian trong ngày họ rất bận, đồng thời, tập luyện trước bữa ăn sáng sẽ giúp giảm bớt căng thẳng trong ngày, phòng chống sự ảnh hưởng của chế độ ăn uống nhiều chất béo và cải thiện giấc ngủ.
3. Tập trung vào một dự án quan trọng
Giờ yên tĩnh của buổi sáng có thể là thời gian lý tưởng để tập trung vào một dự án công việc quan trọng mà không bị gián đoạn vì chắc chắn không có đồng nghiệp nào có thể làm phiền họ vào giờ đó.
4. Dành thời gian cho niềm đam mê cá nhân
Những sở thích cá nhân tốt như đọc sách, viết hay nghe nhạc… rất dễ bị bỏ qua khi bạn đã ở trong cuộc họp cả ngày, mệt mỏi và đói. Đó là lý do tại sao nhiều người thành công thường dành một giờ hoặc lâu hơn cho các sở thích cá nhân của họ trước khi họ chính thức bắt đầu ngày làm việc.
5. Dành thời gian cho gia đình
Một số người thành công sử dụng thời gian buổi sáng cho gia đình, cho dù đó chỉ là đọc truyện cho trẻ em hoặc cùng ăn bữa sáng với nhau.
Judi Rosenthal, một chuyên viên tài chính ở New York, nói rằng buổi sáng là thời gian đặc biệt cô ấy dành cho con gái nhỏ. Cô giúp con gái mặc quần áo, gấp chăn ... Họ cũng cùng ngồi ăn sáng và trò chuyện với nhau. Cô gọi 45 phút đó là "thời gian quý báu nhất mà tôi có trong một ngày".
6. Dành thời gian cho bạn đời
Vào buổi tối, nhiều khả năng bạn sẽ bị mệt mỏi vì công việc trong ngày và thời gian sau đó có thể dễ dàng bị lãng phí với bữa ăn tối và xem TV. Đó là lý do tại sao nhiều người thành công thường dành thời gian cho bạn đời của họ như một thói quen trước bữa sáng.
7. Thưởng thức một cốc cà phê
Christopher Colvin, một doanh nhân và luật sư ở New York cho biết, ngày nào ông cũng thức dậy lúc 5 giờ 30 và thường uống một cốc cà phê để đầu óc tỉnh táo và tăng thêm tinh thần sáng tạo cho ngày làm việc.
8. Ngồi thiền
Manisha Thakor, người sáng lập và hiện đang điều hành MoneyZen Wealth Management, thực hành thiền định siêu việt 20 phút một ngày vào trước bữa ăn sáng và vào buổi tối để giúp tinh thần thoải mái và tăng sự tập trung.
9. Viết ra những điều biết ơn
Viết ra tên những người, địa điểm và cơ hội mà bạn biết ơn chỉ mất một vài phút nhưng có thể tạo nên sự khác biệt thực sự trong quan điểm của bạn.
10. Vạch ra kế hoạch và chiến lược trong thời gian tỉnh táo nhất
Kế hoạch trong ngày, tuần hoặc tháng trước là một công cụ quản lý thời gian quan trọng để giữ cho bạn đi đúng hướng. Vì vậy, hãy sử dụng thời gian trước buổi sáng để suy nghĩ và thiết lập danh sách công việc phải làm trong ngày là một việc hết sức cần thiết.
11. Kiểm tra email
Nhiều người thành công bắt đầu một ngày với email. Họ có thể nhanh chóng lướt qua hộp thư đến để xử lý các thư khẩn cấp mà cần một phản ứng ngay lập tức hoặc phác thảo một vài email quan trọng khi tâm trí đang còn tỉnh táo nhất.
12. Đọc tin tức
Cho dù đang ngồi ở đâu với một tờ báo giấy hay một chiếc điện thoại, laptop, ưu tiên hàng đầu của những người thành đạt cũng là lướt qua những tin tức mới và quan trọng.
Ví dụ, Giám đốc điều hành GE Jeff Immelt bắt đầu ngày của mình với việc tập thể dục và sau đó đọc bài báo và xem tin tức của CNBC. Trong khi đó, Giám đốc điều hành Virgin America David Cush sử dụng buổi sáng của mình để nghe đài phát thanh thể thao và đọc báo trong khi tập thể dục tại phòng tập...
Bạn thấy mình có nhiều nhân tố để trở thành CEO chưa? Hãy để "10 điều khác biệt nhất giữa kẻ làm chủ & người làm thuê" của Keith Cameron Smith trả lời giúp bạn nhé.
More about

HIỂN THỊ SỐ NGƯỜI ĐANG ONLINE TRÊN BLOG

Người đăng: chisenhungsuutam


    Bạn có một trang Blog và muốn biết số người đang truy cập trên blog, hãy làm vài thao tác đơn giản sau đây:

Tạo tiện ích:

1. Đăng nhập vào Blog, vào "Bố cục", chọn "Thêm tiện ích" [1] (nên chọn ở dưới chân blog hoặc trên cột sidebar cho tiện).



2. Trong bảng tiện ích hiện ra, chọn HTML/Javascript [2] (hai ảnh dưới).
More about

Code C/C++: Thuật toán Kruskal tìm cây bao trùm tối thiểu

Người đăng: chisenhungsuutam on Thứ Sáu, 8 tháng 8, 2014


Mô tả bài toán: Cho đồ thị vô hướng có trọng số G=(V,E) hãy tìm đường đi sao cho tất cả các đỉnh điều có đường đi với nhau và tổng trọng số của đường đi là nhỏ nhất. Tức là tìm đồ thị con liên thông  G'  G sao cho tổng trọng số của G’ là nhỏ nhất.
Ý tưởng thuật toán:
Bước 0: khởi tạo tập cạnh tìm được là rỗng và chuyển sang Bước 1.
Bước 1: chọn một cạnh có trọng số nhỏ nhất sao cho khi đưa cạnh này vào tập cạnh tìm được không tạo thành chu trình. Tăng số cạnh tìm được lên 1  và chuyển sang Bước 2.

Bước 2: nếu số cạnh tìm được bằng n-1 thuật toán kết thúc, ngược lại quay về Bước 1.

Mô tả dữ liệu đầu vào và đầu ra của bài toán:
Dữ liệu vào: lưu trong tập tin Bai8.inp
-  Dòng đầu ghi số n là số đỉnh của một đồ thị (0<n<100)
-  Dòng i+1 (1<=i <=n) lưu ma trận kề của đồ thị với n số A[i,1],A[i,2]…A[i,n] mỗi số cách nhau bởi một khoảng trắng.
Dữ liệu ra: lưu trong file Kruskal.out
-  Dòng đầu ghi trọng số nhỏ nhất của cây bao trùm.

-  Các dòng còn lại lưu đường đi giữa đỉnh i nối với đỉnh j.
Ví dụ:
Cài đặt chương trình:
#include <stdio.h>
#include <values.h>
#define FileInt "Bai8.inp"
#define FileOut "Bai8.out"
typedef structEgde {
      int x,y;
};
//đọc dữ liệu từ tập tin
void Doc_File(int **A,int &n)  {
    FILE*f = fopen(FileInt,"rb");
    fscanf(f,"%d",&n);
    *A = new int [n];
    for(int i =0;i<n;i++) {
       A[i] = new int [n];
       for(int j =0;j<n;j++) {
           fscanf(f,"%d",&A[i][j]);
       }
    }
    fclose(f);
}
//ghi dữ liệu ra tập tin
void Ghi_File(Egde*L,int n,int Sum) {
    FILE*f = fopen(FileOut,"wb");
    fprintf(f,"%d\n",Sum);
    for(int i =0; i<n-1; i++)
    fprintf(f,"%d -%d\n",L[i].x+1,L[i].y+1);
    fclose(f);
}
void Kruskal(int **A, int n) {
    int *D = new int[n];

    Egde *L = new Egde[n-1]; 
    int min = MAXINT, Dem = 0, Sum = 0, T = 0, Temp;
    for(int i=0; i<n; i++)
        D[i] = 0;
        do{
            min = MAXINT;
            for( i=0; i<n; i++)
                 for(int j=0; j<n; j++)
                      if(A[i][j]>0 && min>A[i][j]&& !(D[i]!=0 && D[i]==D[j])) {
                          min = A[i][j];
                          L[Dem].x = i;
                          L[Dem].y = j;
                      }
                      if(D[L[Dem].x] ==0 && D[L[Dem].y] == 0){
                          T++;
                          D[L[Dem].x] = D[L[Dem].y] = T;
                      }
                      if(D[L[Dem].x] == 0 && D[L[Dem].y] != 0){
                          D[L[Dem].x] = D[L[Dem].y];
                      }
                      if(D[L[Dem].x] != 0 && D[L[Dem].y] == 0){
                          D[L[Dem].y] = D[L[Dem].x];
                      }
                      if(D[L[Dem].x] != D[L[Dem].y] && D[L[Dem].y]!=0) {
                          Temp = D[L[Dem].x];
                          for( i=0; i<n; i++)
                             if(Temp==D[i])
                                   D[i]=D[L[Dem].y];
                      }
                   Sum+=min;
                   Dem++;
      } while(Dem<n-1);
      Ghi_File(L,n,Sum);
}
//chương trình chính
int main() {
         int **A,n;
         Doc_File(A,n);
         Kruskal(A,n);
         delete *A;
         return 0;
}
Từ khóa: ky thuat lap trinh, kỹ thuật lập trình, Kruskal, cây bao trùm tối thiểu, programming, algorithm, toán rời rạc, cây, cau truc du lieu, giai thuat.

More about

Bài 30: Học làm game thứ 5 - Space Ship ( Part 2 - End )

Người đăng: chisenhungsuutam on Thứ Tư, 6 tháng 8, 2014


Hi, Rảnh rỗi tranh thủ viết cho xong game Space Ship này.
Bài trước chúng ta đã thiết kế sơ bộ xong phần màn chơi, song còn thiếu một số phần quan trọng trong game nên có mà chúng ta sẽ bổ sung ngay sau đây:

+ Bắn đạn khi Touch màn hình
+ Bắt sự kiện va chạm giữa đạn và thiên thạch
+ Tính điểm
+ Game Over

Đơn giản có thế thôi, chúng ta sẽ lướt nhanh!

B1: Bắn đạn khi Touch màn hình

Bạn mở file HelloWorldScene.h thêm vào dòng lệnh sau, trong public

// Hàm bắt sự kiện touch, dùng multiTouch, hoặc Touch thôi cũng được
void HelloWorld::onTouchesBegan(const std::vector<Touch*>& touches, Event *event)

Tiếp đó trong HelloWorldScene.cpp ta thiết kế hàm này như sau

void HelloWorld::onTouchesBegan(const std::vector<Touch*>& touches, Event *event)
{
SimpleAudioEngine::getInstance()->playEffect("laser_ship.wav"); // Âm thanh

Size winSize = Director::getInstance()->getWinSize();

// Lấy sprite Laser từ bộ lưu trữ Vector
Sprite *shipLaser = (Sprite *) _shipLasers->at(_nextShipLaser++);

if ( _nextShipLaser >=_shipLasers->size())   // Reset index laser
_nextShipLaser = 0;
// Đặt vị trí ở phía mũi tàu, và cho hiện lên
shipLaser->setPosition(Point(_ship->getPosition().x + shipLaser->getContentSize().width/2, _ship->getPosition().y));
shipLaser->setVisible(true);
// set body
auto laserbody = PhysicsBody::createBox(shipLaser->getContentSize()/2);  

laserbody->setContactTestBitmask(0xf);  
laserbody->setDynamic(true);
shipLaser->setPhysicsBody(laserbody);

// Di chuyển đạn, gọi tới hàm setInvisible để xử lý
shipLaser->stopAllActions();
shipLaser->runAction(Sequence::create( 
MoveBy::create(0.5,Point(winSize.width, 0)),
CallFuncN::create(this, callfuncN_selector(HelloWorld::setInvisible)), 
NULL 
));
}

B2: Bắt sự kiện va chạm

Thêm hàm sau vào file HelloWorldScene.h

bool onContactBegin(const PhysicsContact &contact);

Và xây dựng nó trong file HelloWorldScene.cpp như sau

bool HelloWorld::onContactBegin(const PhysicsContact& contact)    
{
auto laser = (Sprite*)contact.getShapeA()->getBody()->getNode();
int Tag1 = -1;
if(laser) 
Tag1 = laser->getTag();
auto asteroid = (Sprite*)contact.getShapeB()->getBody()->getNode();
int Tag2 = -1;
if(asteroid) Tag2 =  asteroid->getTag();

//Va chạm giữa đạn và Thiên Thạch
if((Tag1==KLASER&Tag2==KASTEROID)||(Tag2==KLASER&Tag1==KASTEROID))
{
SimpleAudioEngine::sharedEngine()->playEffect("explosion_large.wav"); 
_world->removeBody(laser->getPhysicsBody());
laser->setVisible(false);
_world->removeBody(asteroid->getPhysicsBody());
asteroid->setVisible(false); 
}
// Va chạm giữa thiên thạch và Ship
if((Tag1==KSHIP&Tag2==KASTEROID)||(Tag2==KSHIP&Tag1==KASTEROID))

{
_lives--;

}

return true; 
}

Và không được quên đoạn code Listener ở init()

auto contactListener = EventListenerPhysicsContact::create();
contactListener->onContactBegin = CC_CALLBACK_1(HelloWorld::onContactBegin, this);
_eventDispatcher->addEventListenerWithSceneGraphPriority(contactListener, this);

OK, giờ là tới phần Tính điểm và GameOver

B3: Tính điểm và GameOver

Trong hàm update() bạn thêm vào 1 đoạn sau đây

if (_lives <= 0) { // Kiểm tra không còn mạng nào thì game Over
_ship->stopAllActions();
_ship->setVisible(false);
_world->removeBody(_ship->getPhysicsBody());
this->endScene(KENDREASONLOSE);   // Game Over

Hàm endScene xây dựng như sau

void HelloWorld::endScene( EndReason endReason ) {

if (_gameOver) // trạng thái game
return;
_gameOver = true;

Size winSize = Director::getInstance()->getWinSize();

char message[10] = "";
if ( endReason == KENDREASONLOSE)
strcpy(message,"You Lose"); 

// Tạo 2 Label để làm thông báo
LabelBMFont * label ;
label = LabelBMFont::create(message, "Arial.fnt");
label->setScale(0.1);
label->setPosition(Point(winSize.width/2 , winSize.height*0.6));
this->addChild(label);


// Tạo 1 nút reset game là 1 label
LabelBMFont * restartLabel;
strcpy(message,"Restart");
restartLabel = LabelBMFont::create(message, "Arial.fnt");

MenuItemLabel *restartItem =  MenuItemLabel::create(restartLabel,CC_CALLBACK_1(HelloWorld::resetGame,this));

restartItem->setScale(0.1);
restartItem->setPosition( Point(winSize.width/2, winSize.height*0.4));

Menu *menu = Menu::create(restartItem, NULL);
menu->setPosition(Point::ZERO);
this->addChild(menu);

restartItem->runAction(ScaleTo::create(0.5, 1.0));
label ->runAction(ScaleTo::create(0.5, 1.0));
this->unscheduleUpdate(); // dừng update Scene
}

Và nhớ phải thêm thuộc tính bool _gameOver vào phần public của HelloWorldScene.h, đồng thời trong hàm init() phải khởi tạo nó với giá trị false

Bổ sung hàm endScene() và resetGame() vào trong lớp HelloWorld, và hàm resetGame như sau

void HelloWorld::resetGame(Ref* pSender) {
auto scene = HelloWorld::createScene();
Director::getInstance()->replaceScene(TransitionZoomFlipY::create(0.5, scene));  

Size winSize = Director::getInstance()->getVisibleSize();

}

Giờ ta thêm 1 chút phần tính điểm. Khi bắn mỗi thiên thạch ta được 10 điểm.

Bạn thêm 1 thuộc tính int score, LabelBMFont * _scoreDisplay;vào lớp HelloWorldScene, và khi khởi tạo thêm đoạn code này

_scoreDisplay = LabelBMFont::create("Score: 0", "Arial.fnt", 
visibaleSize.width * 0.3f);
_scoreDisplay->setAnchorPoint(Point(1, 0.5));
_scoreDisplay->setPosition(
Point(visibaleSize.width * 0.8f, visibaleSize.height * 0.94f));
this->addChild(_scoreDisplay);

Trong hàm kiểm tra va chạm chúng ta sẽ tính điểm bằng đoạn code nhỏ như thế này

score+=10;
char szValue[100] = { 0 }; // Lấy ra điểm qua mảng đệm char
sprintf(szValue, "Score: %i", score); // Chuyển sang chuỗi => chuỗi
_scoreDisplay->setString(szValue); // Hiện điểm lên

Bạn có thể làm thế với Live để theo dõi số mạng của Ship

OK, Build thử xem kết quả thế nào nhé, cũng không tệ với 1 game "tự tui".

Và sau đây mình làm thêm 1 bước Bonus nữa là 

Bonus: Điều khiển Ship bằng Accelerometer - gia tốc kế

Trước hết bạn copy 2 file VisibleRect.h, .cpp trong bài cpp-tests vào Class của chúng ta. sau đó trong phần init() thêm đoạn code này vào

#define FIX_POS(_pos, _min, _max) \
if (_pos < _min)        \
_pos = _min;        \
else if (_pos > _max)   \
_pos = _max; 

auto listener = EventListenerAcceleration::create([=](Acceleration* acc, Event* event){
auto shipSize  = _ship->getContentSize();

auto ptNow  = _ship->getPosition();

log("acc: x = %lf, y = %lf", acc->x, acc->y);

ptNow.x += acc->x * 9.81f;
ptNow.y += acc->y * 9.81f;

FIX_POS(ptNow.x, (VisibleRect::left().x+shipSize.width / 2.0), (VisibleRect::right().x - shipSize.width / 2.0));
FIX_POS(ptNow.y, (VisibleRect::bottom().y+shipSize.height / 2.0), (VisibleRect::top().y - shipSize.height / 2.0));
_ship->setPosition(ptNow);
});

auto dispathcher = Director::getInstance()->getEventDispatcher();

dispathcher->addEventListenerWithSceneGraphPriority(listener, this);

Vậy thôi, hãy build lại và thử trên ĐT thật, khi nghiêng xem Ship có di chuyển không nhé, nếu di chuyển là đã thành công

Kết thúc bài này, chúng ta cùng nghiên cứu 1 số vấn đề sau

+ Bắn đạn = Touche, duyệt vector
+ Va chạm
+ Tính điểm, game Over
+ Di chuyển Ship bằng gia tốc kế

Download Code

Mình dừng bài học ở đây nhé

Bài 31: Làm game gì bây giờ?

More about