You are on page 1of 10

CHAPTER

FORTYSIX

BUILDING GAMES FOR ANDROID

In this chapter we will learn about Building RingLibSDL Games for Mobile.
So we can create packages (*.apk) for the applications that are developed using Ring Game Engine for 2D Games.

46.1 Download Requirements and Update the Android SDK

The Android SDK Tools


https://developer.android.com/studio/index.html
The Android NDK
https://developer.android.com/ndk/index.html
Apache Ant v1.8 or later
http://ant.apache.org/bindownload.cgi
Java SE Development Kit (JDK) v6 or later
http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
Update the Android SDK to get the API and tools packages required for development

46.2 Project Folder

Open the project folder : ring/android/ringlibsdl/project

380
Ring Documentation, Release 1.2

You can add the source code (*.ring) and Images/Sound Files to the assets folder.

You will find the Flappy Bird 3000 Game ready for building.
The execution starts from the start.ring file
load "game2.ring"

46.3 Building the project

Move to the ring/android/ringlibsdl/project folder


We can build using the next command (We need to do this for one time only).
ndk-build

Then we can create the package (*.apk) using the next command.

46.3. Building the project 381


Ring Documentation, Release 1.2

ant debug

46.3. Building the project 382


CHAPTER

FORTYSEVEN

DESKTOP AND MOBILE DEVELOPMENT USING RINGQT

In this chapter we will learn how to use the Qt framework classes in our Ring applications to create Desktop and
Mobile Applications.

47.1 The First GUI Application

In this example we will create an application to ask the user about his/her name. When the user type the name in the
textbox then click on Say Hello button, the textbox value will be updated by adding Hello to the name.
Load "guilib.ring"

MyApp = New qApp {

win1 = new qWidget() {

setwindowtitle("Hello World")
setGeometry(100,100,370,250)

label1 = new qLabel(win1) {


settext("What is your name ?")
setGeometry(10,20,350,30)
setalignment(Qt_AlignHCenter)
}

btn1 = new qpushbutton(win1) {


setGeometry(10,200,100,30)
settext("Say Hello")
setclickevent("pHello()")
}

btn1 = new qpushbutton(win1) {


setGeometry(150,200,100,30)
settext("Close")
setclickevent("pClose()")
}

lineedit1 = new qlineedit(win1) {


setGeometry(10,100,350,30)
}

show()
}

383
Ring Documentation, Release 1.2

exec()
}

Func pHello
lineedit1.settext( "Hello " + lineedit1.text())

Func pClose
MyApp.quit()

Program Output:
At first we type the name in the textbox

Then we click on the say hello button

47.1. The First GUI Application 384


Ring Documentation, Release 1.2

47.2 Using Layout

The next example is just an upgrade to the previous application to use the vertical layout.
Load "guilib.ring"

MyApp = New qApp {

win1 = new qWidget() {

setwindowtitle("Hello World")
setGeometry(100,100,400,130)
label1 = new qLabel(win1) {
settext("What is your name ?")
setGeometry(10,20,350,30)
setalignment(Qt_AlignHCenter)
}
btn1 = new qpushbutton(win1) {
setGeometry(10,200,100,30)
settext("Say Hello")
setclickevent("pHello()")
}
btn2 = new qpushbutton(win1) {
setGeometry(150,200,100,30)
settext("Close")
setclickevent("pClose()")
}
lineedit1 = new qlineedit(win1) {
setGeometry(10,100,350,30)
}
layout1 = new qVBoxLayout() {
addwidget(label1)
addwidget(lineedit1)
addwidget(btn1)
addwidget(btn2)
}
win1.setlayout(layout1)
show()
}

exec()

Func pHello
lineedit1.settext( "Hello " + lineedit1.text())

Func pClose
MyApp.quit()

The application during the runtime!

47.2. Using Layout 385


Ring Documentation, Release 1.2

47.3 Using the QTextEdit Class

In this example we will use the QTextEdit Class


Load "guilib.ring"

New qApp {

win1 = new qWidget() {

setwindowtitle("QTextEdit Class")
setGeometry(100,100,500,500)

new qtextedit(win1) {
setGeometry(10,10,480,480)

show()
}

exec()
}

During the runtime we can paste rich text in the qtextedit widget

47.3. Using the QTextEdit Class 386


Ring Documentation, Release 1.2

47.4 Using the QListWidget Class

In this example we will use the QListWidget Class


Load "guilib.ring"

New qApp {

win1 = new qWidget() {

setGeometry(100,100,400,400)

list1 = new qlistwidget(win1) {


setGeometry(150,100,200,200)
alist = ["one","two","three","four","five"]
for x in alist additem(x) next
setcurrentrow(3,2)
win1.setwindowtitle("Items Count : " + count() )
}

47.4. Using the QListWidget Class 387


Ring Documentation, Release 1.2

btn1 = new qpushbutton(win1) {


setGeometry(10,200,100,30)
settext("selected item")
setclickevent("pWork()")
}

btn2 = new qpushbutton(win1) {


setGeometry(10,240,100,30)
settext("Delete item")
setclickevent("pWork2()")
}

show()
}

exec()
}

func pWork
btn1.settext(string(list1.currentrow()))

func pWork2
list1 {
takeitem(currentrow())
}

The application during the runtime

47.4. Using the QListWidget Class 388


Ring Documentation, Release 1.2

Another Example:
Load "guilib.ring"

New qApp {

win1 = new qWidget() {

setGeometry(100,100,500,400)

list1 = new qlistwidget(win1) {


setGeometry(150,100,200,200)
alist = ["one","two","three","four","five"]
for x in alist additem(x) next

setcurrentrow(3,2)
win1.setwindowtitle("Items Count : " + count() )
}

btn1 = new qpushbutton(win1) {


setGeometry(10,200,100,30)
settext("selected item")
setclickevent("pWork()")
}

btn2 = new qpushbutton(win1) {


setGeometry(10,240,100,30)
settext("Delete item")
setclickevent("pWork2()")
}

show()
}

exec()
}

func pWork

nbrOfItems = list1.count()
curItemNbr = list1.currentrow()
curValue = list1.item(list1.currentrow()).text()

win1.setwindowtitle( "After Select - NbrOfItems: " + nbrOfItems +


" CurItemNbr: " + curItemNbr + " CurValue: " + curValue )

btn1.settext( string(list1.currentrow() ) + " --- " +


list1.item(list1.currentrow()).text() )

func pWork2
list1 {
takeitem(currentrow())

nbrOfItems = count()
curItemNbr = currentrow()
curValue = item(currentrow()).text()

47.4. Using the QListWidget Class 389

You might also like