SlideShare a Scribd company logo
Ring Documentation, Release 1.7
Sprite {
file = "images/supermancity.jpg"
x = 0 y=0 width=800 height = 600 scaled = true animate = false
}
Map {
blockwidth = 80
blockheight = 80
aMap = [
[0,0,0,4,4,4,0,0,0,1,0,0,0,1,4,4,0,1,0,0,0,0,4,4,0,1,4,
4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,1,0,0,0,1,0,0,0,1,0,3,3,3,5,3,3,3,3,0],
[0,0,4,0,4,0,4,0,0,1,0,0,0,3,4,4,4,1,0,0,0,0,4,4,0,1,4,
4,4,0,0,4,4,4,4,4,4,4,4,4,4,4,4,1,4,1,0,0,0,1,0,0,0,1,0,4,4,4,4,4,4,4,4,0],
[0,0,0,4,4,4,0,0,0,1,0,0,0,4,4,4,4,1,0,0,0,0,0,0,0,3,4,
4,4,0,0,4,0,0,0,0,0,0,4,2,0,0,4,1,4,1,4,2,4,1,0,2,0,1,0,4,4,4,4,4,4,4,4,0],
[0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,
0,0,0,0,4,4,4,4,4,4,4,4,1,0,0,4,1,4,1,4,1,4,1,0,1,0,1,0,2,2,2,2,2,2,2,2,0],
[0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,
0,0,0,0,2,0,0,0,0,0,2,0,3,0,0,0,1,4,1,4,1,4,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0],
[0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,2,0,0,0,0,0,
0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,4,3,4,1,4,3,0,1,0,3,0,1,0,0,0,0,0,0,0,0],
[0,0,2,0,0,2,0,0,2,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,
0,0,0,0,1,0,0,0,0,0,3,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0],
[0,0,1,0,0,1,0,0,1,3,0,0,0,1,0,0,0,3,0,0,0,1,0,0,0,0,0,
0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0]
]
aImages = ["images/smwall.png","images/smwallup.png",
"images/smwalldown.png","images/smstar.png",
"images/smkey.png","images/smstar2.png"]
}
sprite {
type = ge_type_enemy
animate = false
file = "images/smhome.png"
x = 5000
y = 400
width = 290
height = 200
transparent = true
state = func oGame,oSelf {
oself {
x = 5000 + oGame.aObjects[2].x
if x < 0 or x > SCREEN_W return ok
}
if oGameState.gameresult or oGameState.DoorKey = false return ok
if oGame.aObjects[oGameState.playerindex].x > oself.x + 100 and
oGame.aObjects[oGameState.playerindex].y > oself.y + 50
oGameState.gameresult = true
oGame {
sprite {
file = "images/smwin.jpg"
x=0 y=0 width=800 height=600
scaled = true animate=false
state = func ogame,oself {
oself {
x-=5
y-=5
55.29. Super Man 2016 Game 532
Ring Documentation, Release 1.7
width +=10
height +=10
if x = -300
ogame.shutdown = true
ok
}
}
}
}
ok
}
}
animate {
file = "images/superman.png"
x = 0
y = 0
framewidth = 60
scaled = true
height = 86
width = 60
nStep = 3
transparent = true
state = func oGame,oSelf {
checkstarskeycol(oGame,oSelf)
if not oGameState.playerwin
oself {
file = "images/superman.png"
height = 86
width = 60
for t=1 to 8
if checkwall2(oGame,oSelf,0,5,[2,1])
y += 5
else
exit
ok
next
if y > 500 y=500 ok
}
ok
}
keypress = func ogame,oself,nKey {
if oGameState.gameresult = false
oself {
if nkey = key_up and checkwall(oGame,oSelf,0,-40)
oGameState.value -= 1
checkgameover(oGame)
file = "images/supermanup.png"
height = 123
dotransparent()
y -= 40
oGameState.down = 10
if y<=0 y=0 ok
55.29. Super Man 2016 Game 533
Ring Documentation, Release 1.7
but nkey = key_down and checkwall(oGame,oSelf,0,40)
file = "images/supermandown.png"
dotransparent()
y += 40
if y>=500 y=500 ok
but nKey = key_right and checkwall(oGame,oSelf,10,0)
file = "images/supermanright.png"
dotransparent()
x += 10
if x >= 440
if oGame.aObjects[2].x > -4500
oGame.aObjects[2].x -= 50
callenemystate(oGame)
else
if x <= 750
if checkwall(oGame,oSelf,10,0)
x += 10
ok
else
if checkwall(oGame,oSelf,-10,0)
x -= 10
ok
ok
return
ok
x=400
ok
but nKey = key_left and checkwall(oGame,oSelf,-10,0)
file = "images/supermanleft.png"
dotransparent()
x -= 10
if x <= 0
x += 10
if oGame.aObjects[2].x != 0
oGame.aObjects[2].x += 50
callenemystate(oGame)
x += 50
ok
ok
but nkey = key_esc or nKey = GE_AC_BACK
ogame.shutdown()
ok
}
ok
}
mouse = func ogame,oself,nType,aMouseList {
if nType = GE_MOUSE_DOWN
oGameState.moveplayer = TRUE
But nType = GE_MOUSE_UP
oGameState.moveplayer = FALSE
ok
if oGameState.moveplayer = TRUE
if aMouseList[GE_MOUSE_X] < oSelf.X # left
cFunc = oself.keypress
call cFunc(oGame,oSelf,Key_left)
else
cFunc = oself.keypress
call cFunc(oGame,oSelf,Key_right)
55.29. Super Man 2016 Game 534
Ring Documentation, Release 1.7
ok
if aMouseList[GE_MOUSE_Y] < oSelf.Y # up
cFunc = oself.keypress
call cFunc(oGame,oSelf,Key_up)
else
cFunc = oself.keypress
call cFunc(oGame,oSelf,Key_down)
ok
ok
}
}
addenemy(oGame,600)
addenemy(oGame,900)
addenemy(oGame,1550)
addenemy(oGame,2350)
addenemy(oGame,3350)
addenemy(oGame,3500)
addenemy(oGame,3670)
addenemy(oGame,3840)
text {
animate = false
point = 400
size = 30
file = "fonts/pirulen.ttf"
text = "Score : " + oGameState.score
x = 500 y=0
state = func oGame,oSelf {
oSelf { text = "Score : " + oGameState.score }
}
}
text {
animate = false
point = 400
size = 30
file = "fonts/pirulen.ttf"
text = "Energy : " + oGameState.value
x = 10 y=0
state = func oGame,oSelf { oSelf { text = "Energy : " + oGameState.value } }
}
}
func inlist nValue,aList
for x in aList
if x = nValue
return true
ok
next
return false
func checkwall oGame,oself,diffx,diffy
alist = [1,2,3]
return checkwall2(oGame,oself,diffx,diffy,aList)
func checkwall2 oGame,oself,diffx,diffy,aList
55.29. Super Man 2016 Game 535
Ring Documentation, Release 1.7
xPos = oSelf.x + diffx
yPos = oSelf.y + diffy
nValue = oGame.aObjects[2].getvalue(xPos,yPos)
nValue = inlist(nValue,aList)
nValue = not nValue
if nValue = 0 return nValue ok
xPos = oSelf.x + diffx
yPos = oSelf.y + diffy + oSelf.height
nValue = oGame.aObjects[2].getvalue(xPos,yPos)
nValue = inlist(nValue,aList)
nValue = not nValue
if nValue = 0 return nValue ok
xPos = oSelf.x + diffx + oSelf.width
yPos = oSelf.y + diffy
nValue = oGame.aObjects[2].getvalue(xPos,yPos)
nValue = inlist(nValue,aList)
nValue = not nValue
if nValue = 0 return nValue ok
xPos = oSelf.x + diffx + oSelf.width
yPos = oSelf.y + diffy + oSelf.height
nValue = oGame.aObjects[2].getvalue(xPos,yPos)
nValue = inlist(nValue,aList)
nValue = not nValue
if nValue = 0 return nValue ok
return nValue
func checkopenwall oGame
if oGameState.score = 900
oGame.aObjects[2].aMap[3][10] = 3
oGame.aObjects[2].aMap[4][10] = 0
oGame.aObjects[2].aMap[5][10] = 0
oGame.aObjects[2].aMap[6][10] = 0
oGame.aObjects[2].aMap[7][10] = 0
oGame.aObjects[2].aMap[8][10] = 0
but oGameState.score = 1800
oGame.aObjects[2].aMap[3][18] = 3
oGame.aObjects[2].aMap[4][18] = 0
oGame.aObjects[2].aMap[5][18] = 0
oGame.aObjects[2].aMap[6][18] = 0
oGame.aObjects[2].aMap[7][18] = 0
oGame.aObjects[2].aMap[8][18] = 0
but oGameState.score = 5500
oGame.aObjects[2].aMap[1][44] = 0
oGame.aObjects[2].aMap[2][44] = 0
oGame.aObjects[2].aMap[3][44] = 2
ok
func checkgameover ogame
if oGameState.gameresult return ok
if oGameState.value <= 0
oGameState.value = 0
oGameState.gameresult = true
oGame {
55.29. Super Man 2016 Game 536
Ring Documentation, Release 1.7
text {
point = 400
size = 30
nStep = 9
file = "fonts/pirulen.ttf"
text = "Game Over !!!"
x = 500 y=10
state = func ogame,oself {
if oself.y >= 400
ogame.shutdown = true
ok
}
}
}
showfire(oGame,oGame.aObjects[oGameState.PlayerIndex].x+40,
oGame.aObjects[oGameState.PlayerIndex].y+40)
oGame.aObjects[oGameState.PlayerIndex].enabled = false
oGame.remove(oGameState.PlayerIndex)
ok
func showfire oGame,nX,nY
oGame {
animate {
file = "images/fire.png"
x = nX
y = nY
framewidth = 40
height = 42
nStep = 3
transparent = true
state = func oGame,oSelf {
oSelf {
nStep--
if nStep = 0
nStep = 3
if frame < 13
frame++
else
frame=1
oGame.remove(oself.nIndex)
ok
ok
}
}
}
}
func addenemy oGame,xPos
oGame {
lbraceend = false
sprite {
type = ge_type_enemy
file = "images/smenemy.png"
transparent = true
x = xPos y =10 width=100 height=100
animate=true Scaled=true
direction = GE_DIRECTION_NOMOVE
55.29. Super Man 2016 Game 537
Ring Documentation, Release 1.7
temp = xPos
state = func oGame,oSelf {
oself {
x = oSelf.temp + oGame.aObjects[2].x
if y < 0 y = 0 ok
if y > 100 y=100 ok
if x > SCREEN_W or x < 0 return ok
}
if random(10) = 1
if oGameState.gameresult return ok
ogame {
sprite {
type = ge_type_fire
file = "images/smrocket.png"
scaled = true
transparent = true
x = oself.x + 30
y = oself.y + oself.height+ 30
width = 30
height = 30
point = ogame.screen_h+30
nstep = 30
direction = ge_direction_incvertical
xvalue = oGame.aObjects[2].x
temp = oself.x + 30 - xvalue
state = func oGame,oSelf {
oself { x = oSelf.temp + oGame.aObjects[2].x }
x = oGame.aObjects[oGameState.playerindex]
if oself.x >= x.x and oself.y >= x.y and
oself.x <= x.x + x.width and
oself.y <= x.y + x.height
if oGameState.value > 0
oGameState.value-=1000
ok
ogame.remove(oself.nindex)
checkgameover(oGame)
ok
}
}
}
ok
}
}
}
ogame.lbraceend = true
func checkstarskey oGame,oSelf,nValue,nRow,nCol
switch nValue
on 4
oGame.aObjects[2].aMap[nRow][nCol] = 6
oGameState.Score += 100
checkopenwall(oGame)
oGame { Sound {
once = true
file = "sound/sfx_point.wav"
} }
55.29. Super Man 2016 Game 538
Ring Documentation, Release 1.7
on 5
oGame.aObjects[2].aMap[nRow][nCol] = 0
oGameState.DoorKey = true
oGameState.Score += 500
checkopenwall(oGame)
oGame { Sound {
once = true
file = "sound/sfx_point.wav"
} }
off
func checkstarskeycol oGame,oSelf
nValue = oGame.aObjects[2].getvalue(oSelf.x,oSelf.y)
nRow = oGame.aObjects[2].getrow(oSelf.x,oSelf.y)
nCol = oGame.aObjects[2].getcol(oSelf.x,oSelf.y)
checkstarskey(oGame,oSelf,nValue,nRow,nCol)
nValue = oGame.aObjects[2].getvalue(oSelf.x+oSelf.width,oSelf.y+oSelf.height)
nRow = oGame.aObjects[2].getrow(oSelf.x+oSelf.width,oSelf.y+oSelf.height)
nCol = oGame.aObjects[2].getcol(oSelf.x+oSelf.width,oSelf.y+oSelf.height)
checkstarskey(oGame,oSelf,nValue,nRow,nCol)
nValue = oGame.aObjects[2].getvalue(oSelf.x+oSelf.width,oSelf.y)
nRow = oGame.aObjects[2].getrow(oSelf.x+oSelf.width,oSelf.y)
nCol = oGame.aObjects[2].getcol(oSelf.x+oSelf.width,oSelf.y)
checkstarskey(oGame,oSelf,nValue,nRow,nCol)
nValue = oGame.aObjects[2].getvalue(oSelf.x,oSelf.y+oSelf.height)
nRow = oGame.aObjects[2].getrow(oSelf.x,oSelf.y+oSelf.height)
nCol = oGame.aObjects[2].getcol(oSelf.x,oSelf.y+oSelf.height)
checkstarskey(oGame,oSelf,nValue,nRow,nCol)
func callenemystate oGame
for t in oGame.aObjects
t {
if type = GE_TYPE_ENEMY
call state(oGame,t)
ok
}
next
Class GameState
down = 3
gameresult = false
Score = 0
startplay=false
lastcol = 0
playerwin = false
DoorKey = false
playerindex = 4
value = 1000
moveplayer = false
Screen Shot:
55.29. Super Man 2016 Game 539
Ring Documentation, Release 1.7
55.29. Super Man 2016 Game 540
CHAPTER
FIFTYSIX
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.
56.1 Download Requirements and Update the Android SDK
• The Android SDK Tools
https://developer.android.com/studio/index.html
• The Android NDK (Tested using android-ndk-r10c)
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
Tested using Android 4.4.2 (API 19)
• In Windows - Define the next Environment Variables based on your system.
1. JAVA_HOME
For Example : C:Program Files (x86)Javajdk1.8.0_05
2. ANDROID_HOME
For Example : B:mahmoudToolsJava-Androidadt-bundle-windows-x86-20140702sdk
56.2 Project Folder
Open the project folder : ring/android/ringlibsdl/project
541

More Related Content

What's hot (20)

PDF
The Ring programming language version 1.5.1 book - Part 49 of 180
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.5.4 book - Part 51 of 185
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.2 book - Part 38 of 84
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.2 book - Part 40 of 84
Mahmoud Samir Fayed
 
PDF
Corona sdk
Dom Dominic Toretto
 
PDF
The Ring programming language version 1.5.2 book - Part 66 of 181
Mahmoud Samir Fayed
 
KEY
Intro to Game Programming
Richard Jones
 
PDF
The Ring programming language version 1.5.2 book - Part 29 of 181
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.10 book - Part 81 of 212
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.9 book - Part 61 of 210
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.3 book - Part 41 of 88
Mahmoud Samir Fayed
 
KEY
Introduction to Game Programming Tutorial
Richard Jones
 
PDF
The Ring programming language version 1.5.2 book - Part 51 of 181
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.5 book - Part 9 of 31
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.6 book - Part 54 of 189
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.5.3 book - Part 61 of 184
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.10 book - Part 62 of 212
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.10 book - Part 63 of 212
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.7 book - Part 55 of 196
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.2 book - Part 39 of 84
Mahmoud Samir Fayed
 
The Ring programming language version 1.5.1 book - Part 49 of 180
Mahmoud Samir Fayed
 
The Ring programming language version 1.5.4 book - Part 51 of 185
Mahmoud Samir Fayed
 
The Ring programming language version 1.2 book - Part 38 of 84
Mahmoud Samir Fayed
 
The Ring programming language version 1.2 book - Part 40 of 84
Mahmoud Samir Fayed
 
The Ring programming language version 1.5.2 book - Part 66 of 181
Mahmoud Samir Fayed
 
Intro to Game Programming
Richard Jones
 
The Ring programming language version 1.5.2 book - Part 29 of 181
Mahmoud Samir Fayed
 
The Ring programming language version 1.10 book - Part 81 of 212
Mahmoud Samir Fayed
 
The Ring programming language version 1.9 book - Part 61 of 210
Mahmoud Samir Fayed
 
The Ring programming language version 1.3 book - Part 41 of 88
Mahmoud Samir Fayed
 
Introduction to Game Programming Tutorial
Richard Jones
 
The Ring programming language version 1.5.2 book - Part 51 of 181
Mahmoud Samir Fayed
 
The Ring programming language version 1.5 book - Part 9 of 31
Mahmoud Samir Fayed
 
The Ring programming language version 1.6 book - Part 54 of 189
Mahmoud Samir Fayed
 
The Ring programming language version 1.5.3 book - Part 61 of 184
Mahmoud Samir Fayed
 
The Ring programming language version 1.10 book - Part 62 of 212
Mahmoud Samir Fayed
 
The Ring programming language version 1.10 book - Part 63 of 212
Mahmoud Samir Fayed
 
The Ring programming language version 1.7 book - Part 55 of 196
Mahmoud Samir Fayed
 
The Ring programming language version 1.2 book - Part 39 of 84
Mahmoud Samir Fayed
 

Similar to The Ring programming language version 1.7 book - Part 57 of 196 (20)

PDF
The Ring programming language version 1.5.4 book - Part 52 of 185
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.6 book - Part 55 of 189
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.5.2 book - Part 52 of 181
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.8 book - Part 58 of 202
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.5.1 book - Part 50 of 180
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.5.4 book - Part 53 of 185
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.4 book - Part 15 of 30
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.5.3 book - Part 60 of 184
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.5.3 book - Part 50 of 184
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.3 book - Part 40 of 88
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.5.3 book - Part 69 of 184
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.9 book - Part 69 of 210
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.6 book - Part 53 of 189
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.5.2 book - Part 50 of 181
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.9 book - Part 60 of 210
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.2 book - Part 37 of 84
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.8 book - Part 66 of 202
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.4.1 book - Part 15 of 31
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.7 book - Part 64 of 196
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.7 book - Part 54 of 196
Mahmoud Samir Fayed
 
The Ring programming language version 1.5.4 book - Part 52 of 185
Mahmoud Samir Fayed
 
The Ring programming language version 1.6 book - Part 55 of 189
Mahmoud Samir Fayed
 
The Ring programming language version 1.5.2 book - Part 52 of 181
Mahmoud Samir Fayed
 
The Ring programming language version 1.8 book - Part 58 of 202
Mahmoud Samir Fayed
 
The Ring programming language version 1.5.1 book - Part 50 of 180
Mahmoud Samir Fayed
 
The Ring programming language version 1.5.4 book - Part 53 of 185
Mahmoud Samir Fayed
 
The Ring programming language version 1.4 book - Part 15 of 30
Mahmoud Samir Fayed
 
The Ring programming language version 1.5.3 book - Part 60 of 184
Mahmoud Samir Fayed
 
The Ring programming language version 1.5.3 book - Part 50 of 184
Mahmoud Samir Fayed
 
The Ring programming language version 1.3 book - Part 40 of 88
Mahmoud Samir Fayed
 
The Ring programming language version 1.5.3 book - Part 69 of 184
Mahmoud Samir Fayed
 
The Ring programming language version 1.9 book - Part 69 of 210
Mahmoud Samir Fayed
 
The Ring programming language version 1.6 book - Part 53 of 189
Mahmoud Samir Fayed
 
The Ring programming language version 1.5.2 book - Part 50 of 181
Mahmoud Samir Fayed
 
The Ring programming language version 1.9 book - Part 60 of 210
Mahmoud Samir Fayed
 
The Ring programming language version 1.2 book - Part 37 of 84
Mahmoud Samir Fayed
 
The Ring programming language version 1.8 book - Part 66 of 202
Mahmoud Samir Fayed
 
The Ring programming language version 1.4.1 book - Part 15 of 31
Mahmoud Samir Fayed
 
The Ring programming language version 1.7 book - Part 64 of 196
Mahmoud Samir Fayed
 
The Ring programming language version 1.7 book - Part 54 of 196
Mahmoud Samir Fayed
 
Ad

More from Mahmoud Samir Fayed (20)

PDF
The Ring programming language version 1.10 book - Part 212 of 212
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.10 book - Part 211 of 212
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.10 book - Part 210 of 212
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.10 book - Part 208 of 212
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.10 book - Part 207 of 212
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.10 book - Part 205 of 212
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.10 book - Part 206 of 212
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.10 book - Part 204 of 212
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.10 book - Part 203 of 212
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.10 book - Part 202 of 212
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.10 book - Part 201 of 212
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.10 book - Part 200 of 212
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.10 book - Part 199 of 212
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.10 book - Part 198 of 212
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.10 book - Part 197 of 212
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.10 book - Part 196 of 212
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.10 book - Part 195 of 212
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.10 book - Part 194 of 212
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.10 book - Part 193 of 212
Mahmoud Samir Fayed
 
PDF
The Ring programming language version 1.10 book - Part 192 of 212
Mahmoud Samir Fayed
 
The Ring programming language version 1.10 book - Part 212 of 212
Mahmoud Samir Fayed
 
The Ring programming language version 1.10 book - Part 211 of 212
Mahmoud Samir Fayed
 
The Ring programming language version 1.10 book - Part 210 of 212
Mahmoud Samir Fayed
 
The Ring programming language version 1.10 book - Part 208 of 212
Mahmoud Samir Fayed
 
The Ring programming language version 1.10 book - Part 207 of 212
Mahmoud Samir Fayed
 
The Ring programming language version 1.10 book - Part 205 of 212
Mahmoud Samir Fayed
 
The Ring programming language version 1.10 book - Part 206 of 212
Mahmoud Samir Fayed
 
The Ring programming language version 1.10 book - Part 204 of 212
Mahmoud Samir Fayed
 
The Ring programming language version 1.10 book - Part 203 of 212
Mahmoud Samir Fayed
 
The Ring programming language version 1.10 book - Part 202 of 212
Mahmoud Samir Fayed
 
The Ring programming language version 1.10 book - Part 201 of 212
Mahmoud Samir Fayed
 
The Ring programming language version 1.10 book - Part 200 of 212
Mahmoud Samir Fayed
 
The Ring programming language version 1.10 book - Part 199 of 212
Mahmoud Samir Fayed
 
The Ring programming language version 1.10 book - Part 198 of 212
Mahmoud Samir Fayed
 
The Ring programming language version 1.10 book - Part 197 of 212
Mahmoud Samir Fayed
 
The Ring programming language version 1.10 book - Part 196 of 212
Mahmoud Samir Fayed
 
The Ring programming language version 1.10 book - Part 195 of 212
Mahmoud Samir Fayed
 
The Ring programming language version 1.10 book - Part 194 of 212
Mahmoud Samir Fayed
 
The Ring programming language version 1.10 book - Part 193 of 212
Mahmoud Samir Fayed
 
The Ring programming language version 1.10 book - Part 192 of 212
Mahmoud Samir Fayed
 
Ad

Recently uploaded (20)

PPTX
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
PDF
Windsurf Meetup Ottawa 2025-07-12 - Planning Mode at Reliza.pdf
Pavel Shukhman
 
PDF
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
PDF
Log-Based Anomaly Detection: Enhancing System Reliability with Machine Learning
Mohammed BEKKOUCHE
 
PPT
Interview paper part 3, It is based on Interview Prep
SoumyadeepGhosh39
 
PPTX
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
PDF
Blockchain Transactions Explained For Everyone
CIFDAQ
 
PDF
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PDF
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PDF
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
PPTX
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
PDF
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
PDF
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
PDF
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
Windsurf Meetup Ottawa 2025-07-12 - Planning Mode at Reliza.pdf
Pavel Shukhman
 
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
Log-Based Anomaly Detection: Enhancing System Reliability with Machine Learning
Mohammed BEKKOUCHE
 
Interview paper part 3, It is based on Interview Prep
SoumyadeepGhosh39
 
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
Blockchain Transactions Explained For Everyone
CIFDAQ
 
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 

The Ring programming language version 1.7 book - Part 57 of 196

  • 1. Ring Documentation, Release 1.7 Sprite { file = "images/supermancity.jpg" x = 0 y=0 width=800 height = 600 scaled = true animate = false } Map { blockwidth = 80 blockheight = 80 aMap = [ [0,0,0,4,4,4,0,0,0,1,0,0,0,1,4,4,0,1,0,0,0,0,4,4,0,1,4, 4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,1,0,0,0,1,0,0,0,1,0,3,3,3,5,3,3,3,3,0], [0,0,4,0,4,0,4,0,0,1,0,0,0,3,4,4,4,1,0,0,0,0,4,4,0,1,4, 4,4,0,0,4,4,4,4,4,4,4,4,4,4,4,4,1,4,1,0,0,0,1,0,0,0,1,0,4,4,4,4,4,4,4,4,0], [0,0,0,4,4,4,0,0,0,1,0,0,0,4,4,4,4,1,0,0,0,0,0,0,0,3,4, 4,4,0,0,4,0,0,0,0,0,0,4,2,0,0,4,1,4,1,4,2,4,1,0,2,0,1,0,4,4,4,4,4,4,4,4,0], [0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, 0,0,0,0,4,4,4,4,4,4,4,4,1,0,0,4,1,4,1,4,1,4,1,0,1,0,1,0,2,2,2,2,2,2,2,2,0], [0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0, 0,0,0,0,2,0,0,0,0,0,2,0,3,0,0,0,1,4,1,4,1,4,1,0,1,0,1,0,1,0,0,0,0,0,0,0,0], [0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0,2,0,0,0,0,0, 0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,4,3,4,1,4,3,0,1,0,3,0,1,0,0,0,0,0,0,0,0], [0,0,2,0,0,2,0,0,2,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0, 0,0,0,0,1,0,0,0,0,0,3,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0], [0,0,1,0,0,1,0,0,1,3,0,0,0,1,0,0,0,3,0,0,0,1,0,0,0,0,0, 0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0] ] aImages = ["images/smwall.png","images/smwallup.png", "images/smwalldown.png","images/smstar.png", "images/smkey.png","images/smstar2.png"] } sprite { type = ge_type_enemy animate = false file = "images/smhome.png" x = 5000 y = 400 width = 290 height = 200 transparent = true state = func oGame,oSelf { oself { x = 5000 + oGame.aObjects[2].x if x < 0 or x > SCREEN_W return ok } if oGameState.gameresult or oGameState.DoorKey = false return ok if oGame.aObjects[oGameState.playerindex].x > oself.x + 100 and oGame.aObjects[oGameState.playerindex].y > oself.y + 50 oGameState.gameresult = true oGame { sprite { file = "images/smwin.jpg" x=0 y=0 width=800 height=600 scaled = true animate=false state = func ogame,oself { oself { x-=5 y-=5 55.29. Super Man 2016 Game 532
  • 2. Ring Documentation, Release 1.7 width +=10 height +=10 if x = -300 ogame.shutdown = true ok } } } } ok } } animate { file = "images/superman.png" x = 0 y = 0 framewidth = 60 scaled = true height = 86 width = 60 nStep = 3 transparent = true state = func oGame,oSelf { checkstarskeycol(oGame,oSelf) if not oGameState.playerwin oself { file = "images/superman.png" height = 86 width = 60 for t=1 to 8 if checkwall2(oGame,oSelf,0,5,[2,1]) y += 5 else exit ok next if y > 500 y=500 ok } ok } keypress = func ogame,oself,nKey { if oGameState.gameresult = false oself { if nkey = key_up and checkwall(oGame,oSelf,0,-40) oGameState.value -= 1 checkgameover(oGame) file = "images/supermanup.png" height = 123 dotransparent() y -= 40 oGameState.down = 10 if y<=0 y=0 ok 55.29. Super Man 2016 Game 533
  • 3. Ring Documentation, Release 1.7 but nkey = key_down and checkwall(oGame,oSelf,0,40) file = "images/supermandown.png" dotransparent() y += 40 if y>=500 y=500 ok but nKey = key_right and checkwall(oGame,oSelf,10,0) file = "images/supermanright.png" dotransparent() x += 10 if x >= 440 if oGame.aObjects[2].x > -4500 oGame.aObjects[2].x -= 50 callenemystate(oGame) else if x <= 750 if checkwall(oGame,oSelf,10,0) x += 10 ok else if checkwall(oGame,oSelf,-10,0) x -= 10 ok ok return ok x=400 ok but nKey = key_left and checkwall(oGame,oSelf,-10,0) file = "images/supermanleft.png" dotransparent() x -= 10 if x <= 0 x += 10 if oGame.aObjects[2].x != 0 oGame.aObjects[2].x += 50 callenemystate(oGame) x += 50 ok ok but nkey = key_esc or nKey = GE_AC_BACK ogame.shutdown() ok } ok } mouse = func ogame,oself,nType,aMouseList { if nType = GE_MOUSE_DOWN oGameState.moveplayer = TRUE But nType = GE_MOUSE_UP oGameState.moveplayer = FALSE ok if oGameState.moveplayer = TRUE if aMouseList[GE_MOUSE_X] < oSelf.X # left cFunc = oself.keypress call cFunc(oGame,oSelf,Key_left) else cFunc = oself.keypress call cFunc(oGame,oSelf,Key_right) 55.29. Super Man 2016 Game 534
  • 4. Ring Documentation, Release 1.7 ok if aMouseList[GE_MOUSE_Y] < oSelf.Y # up cFunc = oself.keypress call cFunc(oGame,oSelf,Key_up) else cFunc = oself.keypress call cFunc(oGame,oSelf,Key_down) ok ok } } addenemy(oGame,600) addenemy(oGame,900) addenemy(oGame,1550) addenemy(oGame,2350) addenemy(oGame,3350) addenemy(oGame,3500) addenemy(oGame,3670) addenemy(oGame,3840) text { animate = false point = 400 size = 30 file = "fonts/pirulen.ttf" text = "Score : " + oGameState.score x = 500 y=0 state = func oGame,oSelf { oSelf { text = "Score : " + oGameState.score } } } text { animate = false point = 400 size = 30 file = "fonts/pirulen.ttf" text = "Energy : " + oGameState.value x = 10 y=0 state = func oGame,oSelf { oSelf { text = "Energy : " + oGameState.value } } } } func inlist nValue,aList for x in aList if x = nValue return true ok next return false func checkwall oGame,oself,diffx,diffy alist = [1,2,3] return checkwall2(oGame,oself,diffx,diffy,aList) func checkwall2 oGame,oself,diffx,diffy,aList 55.29. Super Man 2016 Game 535
  • 5. Ring Documentation, Release 1.7 xPos = oSelf.x + diffx yPos = oSelf.y + diffy nValue = oGame.aObjects[2].getvalue(xPos,yPos) nValue = inlist(nValue,aList) nValue = not nValue if nValue = 0 return nValue ok xPos = oSelf.x + diffx yPos = oSelf.y + diffy + oSelf.height nValue = oGame.aObjects[2].getvalue(xPos,yPos) nValue = inlist(nValue,aList) nValue = not nValue if nValue = 0 return nValue ok xPos = oSelf.x + diffx + oSelf.width yPos = oSelf.y + diffy nValue = oGame.aObjects[2].getvalue(xPos,yPos) nValue = inlist(nValue,aList) nValue = not nValue if nValue = 0 return nValue ok xPos = oSelf.x + diffx + oSelf.width yPos = oSelf.y + diffy + oSelf.height nValue = oGame.aObjects[2].getvalue(xPos,yPos) nValue = inlist(nValue,aList) nValue = not nValue if nValue = 0 return nValue ok return nValue func checkopenwall oGame if oGameState.score = 900 oGame.aObjects[2].aMap[3][10] = 3 oGame.aObjects[2].aMap[4][10] = 0 oGame.aObjects[2].aMap[5][10] = 0 oGame.aObjects[2].aMap[6][10] = 0 oGame.aObjects[2].aMap[7][10] = 0 oGame.aObjects[2].aMap[8][10] = 0 but oGameState.score = 1800 oGame.aObjects[2].aMap[3][18] = 3 oGame.aObjects[2].aMap[4][18] = 0 oGame.aObjects[2].aMap[5][18] = 0 oGame.aObjects[2].aMap[6][18] = 0 oGame.aObjects[2].aMap[7][18] = 0 oGame.aObjects[2].aMap[8][18] = 0 but oGameState.score = 5500 oGame.aObjects[2].aMap[1][44] = 0 oGame.aObjects[2].aMap[2][44] = 0 oGame.aObjects[2].aMap[3][44] = 2 ok func checkgameover ogame if oGameState.gameresult return ok if oGameState.value <= 0 oGameState.value = 0 oGameState.gameresult = true oGame { 55.29. Super Man 2016 Game 536
  • 6. Ring Documentation, Release 1.7 text { point = 400 size = 30 nStep = 9 file = "fonts/pirulen.ttf" text = "Game Over !!!" x = 500 y=10 state = func ogame,oself { if oself.y >= 400 ogame.shutdown = true ok } } } showfire(oGame,oGame.aObjects[oGameState.PlayerIndex].x+40, oGame.aObjects[oGameState.PlayerIndex].y+40) oGame.aObjects[oGameState.PlayerIndex].enabled = false oGame.remove(oGameState.PlayerIndex) ok func showfire oGame,nX,nY oGame { animate { file = "images/fire.png" x = nX y = nY framewidth = 40 height = 42 nStep = 3 transparent = true state = func oGame,oSelf { oSelf { nStep-- if nStep = 0 nStep = 3 if frame < 13 frame++ else frame=1 oGame.remove(oself.nIndex) ok ok } } } } func addenemy oGame,xPos oGame { lbraceend = false sprite { type = ge_type_enemy file = "images/smenemy.png" transparent = true x = xPos y =10 width=100 height=100 animate=true Scaled=true direction = GE_DIRECTION_NOMOVE 55.29. Super Man 2016 Game 537
  • 7. Ring Documentation, Release 1.7 temp = xPos state = func oGame,oSelf { oself { x = oSelf.temp + oGame.aObjects[2].x if y < 0 y = 0 ok if y > 100 y=100 ok if x > SCREEN_W or x < 0 return ok } if random(10) = 1 if oGameState.gameresult return ok ogame { sprite { type = ge_type_fire file = "images/smrocket.png" scaled = true transparent = true x = oself.x + 30 y = oself.y + oself.height+ 30 width = 30 height = 30 point = ogame.screen_h+30 nstep = 30 direction = ge_direction_incvertical xvalue = oGame.aObjects[2].x temp = oself.x + 30 - xvalue state = func oGame,oSelf { oself { x = oSelf.temp + oGame.aObjects[2].x } x = oGame.aObjects[oGameState.playerindex] if oself.x >= x.x and oself.y >= x.y and oself.x <= x.x + x.width and oself.y <= x.y + x.height if oGameState.value > 0 oGameState.value-=1000 ok ogame.remove(oself.nindex) checkgameover(oGame) ok } } } ok } } } ogame.lbraceend = true func checkstarskey oGame,oSelf,nValue,nRow,nCol switch nValue on 4 oGame.aObjects[2].aMap[nRow][nCol] = 6 oGameState.Score += 100 checkopenwall(oGame) oGame { Sound { once = true file = "sound/sfx_point.wav" } } 55.29. Super Man 2016 Game 538
  • 8. Ring Documentation, Release 1.7 on 5 oGame.aObjects[2].aMap[nRow][nCol] = 0 oGameState.DoorKey = true oGameState.Score += 500 checkopenwall(oGame) oGame { Sound { once = true file = "sound/sfx_point.wav" } } off func checkstarskeycol oGame,oSelf nValue = oGame.aObjects[2].getvalue(oSelf.x,oSelf.y) nRow = oGame.aObjects[2].getrow(oSelf.x,oSelf.y) nCol = oGame.aObjects[2].getcol(oSelf.x,oSelf.y) checkstarskey(oGame,oSelf,nValue,nRow,nCol) nValue = oGame.aObjects[2].getvalue(oSelf.x+oSelf.width,oSelf.y+oSelf.height) nRow = oGame.aObjects[2].getrow(oSelf.x+oSelf.width,oSelf.y+oSelf.height) nCol = oGame.aObjects[2].getcol(oSelf.x+oSelf.width,oSelf.y+oSelf.height) checkstarskey(oGame,oSelf,nValue,nRow,nCol) nValue = oGame.aObjects[2].getvalue(oSelf.x+oSelf.width,oSelf.y) nRow = oGame.aObjects[2].getrow(oSelf.x+oSelf.width,oSelf.y) nCol = oGame.aObjects[2].getcol(oSelf.x+oSelf.width,oSelf.y) checkstarskey(oGame,oSelf,nValue,nRow,nCol) nValue = oGame.aObjects[2].getvalue(oSelf.x,oSelf.y+oSelf.height) nRow = oGame.aObjects[2].getrow(oSelf.x,oSelf.y+oSelf.height) nCol = oGame.aObjects[2].getcol(oSelf.x,oSelf.y+oSelf.height) checkstarskey(oGame,oSelf,nValue,nRow,nCol) func callenemystate oGame for t in oGame.aObjects t { if type = GE_TYPE_ENEMY call state(oGame,t) ok } next Class GameState down = 3 gameresult = false Score = 0 startplay=false lastcol = 0 playerwin = false DoorKey = false playerindex = 4 value = 1000 moveplayer = false Screen Shot: 55.29. Super Man 2016 Game 539
  • 9. Ring Documentation, Release 1.7 55.29. Super Man 2016 Game 540
  • 10. CHAPTER FIFTYSIX 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. 56.1 Download Requirements and Update the Android SDK • The Android SDK Tools https://developer.android.com/studio/index.html • The Android NDK (Tested using android-ndk-r10c) 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 Tested using Android 4.4.2 (API 19) • In Windows - Define the next Environment Variables based on your system. 1. JAVA_HOME For Example : C:Program Files (x86)Javajdk1.8.0_05 2. ANDROID_HOME For Example : B:mahmoudToolsJava-Androidadt-bundle-windows-x86-20140702sdk 56.2 Project Folder Open the project folder : ring/android/ringlibsdl/project 541