mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 09:40:21 +00:00
* update .gitmodules * Update grammars.yml * Create hello.ring * Create Natural.ring * Create weblib.ring * vendor/grammars/language-ring * fix order in grammars.yml * remove two files from samples * delete hello.ring * Update languages.yml - add the R * Create hello.ring * Create natural.ring * Create weblib.ring * Create grammars.yml * Create .gitmodules * Create languages.yml * Create languages.yml * Create language-ring.txt * Update .gitmodules Prefer HTTPS links. * Update hello.ring Sample file from "real" applications (under permissive license) to train the Bayesian classifier. * Update languages.yml * Update weblib.ring Reduce the file size * Update .gitmodules * Update .gitmodules * Update .gitmodules * Update .gitmodules * Update submodule : language-ring * Update weblib.ring Sample : Using the web library. * Create weighthistory Add Sample * Rename weighthistory to weighthistory.ring * Update weblib.ring
336 lines
6.2 KiB
Plaintext
336 lines
6.2 KiB
Plaintext
# The Ring Standard Library
|
|
# Game Engine for 2D Games
|
|
# Flappy Bird 3000 Game
|
|
# 2016, Mahmoud Fayed <msfclipper@yahoo.com>
|
|
|
|
oGameState = NULL
|
|
|
|
Load "gameengine.ring"
|
|
|
|
func main
|
|
|
|
oGame = New Game
|
|
|
|
while true
|
|
|
|
oGameState = New GameState
|
|
|
|
oGame {
|
|
title = "Flappy Bird 3000"
|
|
sprite
|
|
{
|
|
file = "images/fbback.png"
|
|
x = 0 y=0 width=800 height = 600 scaled = true animate = false
|
|
keypress = func ogame,oself,nKey {
|
|
if nkey = key_esc or nKey = GE_AC_BACK
|
|
ogame.shutdown()
|
|
but nKey = key_space
|
|
oGameState.startplay=true
|
|
ogame.shutdown=true
|
|
ok
|
|
}
|
|
mouse = func ogame,oself,nType,aMouseList {
|
|
if nType = GE_MOUSE_UP
|
|
call oself.keypress(oGame,oSelf,Key_Space)
|
|
ok
|
|
}
|
|
}
|
|
text {
|
|
animate = false
|
|
size = 35
|
|
file = "fonts/pirulen.ttf"
|
|
text = "Flappy Bird 3000"
|
|
x = 150 y=50
|
|
}
|
|
text {
|
|
animate = false
|
|
size = 25
|
|
file = "fonts/pirulen.ttf"
|
|
text = "Version 1.0"
|
|
x = 280 y=100
|
|
}
|
|
text {
|
|
animate = false
|
|
size = 16
|
|
file = "fonts/pirulen.ttf"
|
|
text = "(C) 2016, Mahmoud Fayed"
|
|
x = 245 y=140
|
|
}
|
|
|
|
text {
|
|
animate = false
|
|
size = 25
|
|
file = "fonts/pirulen.ttf"
|
|
text = "To Win Get Score = 3000"
|
|
x = 150 y=270
|
|
}
|
|
|
|
text {
|
|
animate = false
|
|
size = 25
|
|
file = "fonts/pirulen.ttf"
|
|
text = "Press Space to start"
|
|
x = 190 y=470
|
|
}
|
|
text {
|
|
animate = false
|
|
size = 20
|
|
file = "fonts/pirulen.ttf"
|
|
text = "Press Esc to Exit"
|
|
x = 260 y=510
|
|
}
|
|
|
|
animate {
|
|
file = "images/fbbird.png"
|
|
x = 200
|
|
y = 200
|
|
framewidth = 20
|
|
scaled = true
|
|
height = 50
|
|
width = 50
|
|
nStep = 3
|
|
transparent = true
|
|
animate = true
|
|
direction = ge_direction_random
|
|
state = func oGame,oSelf {
|
|
oSelf {
|
|
nStep--
|
|
if nStep = 0
|
|
nStep = 3
|
|
if frame < 3
|
|
frame++
|
|
else
|
|
frame=1
|
|
ok
|
|
ok
|
|
if x <= 0 x=0 ok
|
|
if y <= 0 y=0 ok
|
|
if x >= 750 x= 750 ok
|
|
if y > 550 y=550 ok
|
|
}
|
|
}
|
|
}
|
|
|
|
Sound {
|
|
file = "sound/music2.wav"
|
|
}
|
|
}
|
|
if oGameState.startplay
|
|
oGame.refresh()
|
|
playstart(oGame)
|
|
oGame.refresh()
|
|
ok
|
|
|
|
end
|
|
|
|
|
|
func playstart oGame
|
|
|
|
oGame {
|
|
FPS = 60
|
|
FixedFPS = 120
|
|
Title = "Flappy Bird 3000"
|
|
Sprite {
|
|
file = "images/fbback.png"
|
|
x = 0 y=0 width=800 height = 600 scaled = true animate = false
|
|
keypress = func ogame,oself,nKey {
|
|
if nkey = key_esc or nKey = GE_AC_BACK
|
|
ogame.shutdown()
|
|
ok
|
|
}
|
|
}
|
|
|
|
Map {
|
|
blockwidth = 80
|
|
blockheight = 80
|
|
aMap = [
|
|
[0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,1,0,0,0,0,0,0,0,1,0,0,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,1,0,0,0],
|
|
[0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,1,0,0,0],
|
|
[0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,1,0,0,0],
|
|
[0,0,0,0,0,0,0,0,0,3,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0],
|
|
[0,0,0,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,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,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0]
|
|
]
|
|
newmap(aMap)
|
|
aImages = ["images/fbwall.png","images/fbwallup.png",
|
|
"images/fbwalldown.png"]
|
|
state = func oGame,oSelf {
|
|
if oGameState.gameresult = false
|
|
px = oGame.aObjects[3].x
|
|
py = oGame.aObjects[3].y
|
|
oSelf {
|
|
x -= 3
|
|
if x < - 2100
|
|
x = 0
|
|
newmap(aMap)
|
|
ok
|
|
nCol = getcol(px,0)
|
|
if nCol=11 or nCol=15 or nCol=19 or nCol=23 or nCol=27
|
|
if nCol != oGameState.lastcol
|
|
oGameState.lastcol = nCol
|
|
oGameState.Score += 100
|
|
oGame { Sound {
|
|
once = true
|
|
file = "sound/sfx_point.wav"
|
|
} }
|
|
checkwin(oGame)
|
|
ok
|
|
ok
|
|
}
|
|
if oSelf.getvalue(px+40,py) != 0 or
|
|
oSelf.getvalue(px+40,py+40) != 0 or
|
|
oSelf.getvalue(px,py) != 0 or
|
|
oSelf.getvalue(px,py+40) != 0
|
|
oGameState.gameresult = true
|
|
oGame {
|
|
text {
|
|
point = 550
|
|
size = 30
|
|
nStep = 3
|
|
file = "fonts/pirulen.ttf"
|
|
text = "Game Over !!!"
|
|
x = 500 y=10
|
|
state = func ogame,oself {
|
|
if oself.y >= 550
|
|
ogame.shutdown = true
|
|
ok
|
|
if oself.y = 90
|
|
ogame {
|
|
Sound {
|
|
once = true
|
|
file = "sound/sfx_die.wav"
|
|
}
|
|
}
|
|
ok
|
|
}
|
|
}
|
|
Sound {
|
|
once = true
|
|
file = "sound/sfx_hit.wav"
|
|
}
|
|
}
|
|
ok
|
|
ok
|
|
}
|
|
}
|
|
|
|
animate {
|
|
file = "images/fbbird.png"
|
|
x = 10
|
|
y = 10
|
|
framewidth = 20
|
|
scaled = true
|
|
height = 50
|
|
width = 50
|
|
nStep = 3
|
|
transparent = true
|
|
state = func oGame,oSelf {
|
|
oSelf {
|
|
nStep--
|
|
if nStep = 0
|
|
nStep = 3
|
|
if frame < 3
|
|
frame++
|
|
else
|
|
frame=1
|
|
ok
|
|
ok
|
|
}
|
|
|
|
if not oGameState.playerwin
|
|
oGameState.down --
|
|
if oGameState.down = 0
|
|
oGameState.down = 3
|
|
oself {
|
|
y += 25
|
|
if y > 550 y=550 ok
|
|
}
|
|
ok
|
|
ok
|
|
|
|
}
|
|
keypress = func ogame,oself,nKey {
|
|
if oGameState.gameresult = false
|
|
oself {
|
|
if nkey = key_space
|
|
y -= 55
|
|
oGameState.down = 60
|
|
if y<=0 y=0 ok
|
|
ok
|
|
}
|
|
ok
|
|
}
|
|
mouse = func ogame,oself,nType,aMouseList {
|
|
if nType = GE_MOUSE_UP
|
|
call oself.keypress(oGame,oSelf,Key_Space)
|
|
ok
|
|
}
|
|
}
|
|
|
|
text {
|
|
animate = false
|
|
point = 400
|
|
size = 30
|
|
file = "fonts/pirulen.ttf"
|
|
text = "Score : " + oGameState.score
|
|
x = 500 y=10
|
|
state = func oGame,oSelf {
|
|
oSelf { text = "Score : " + oGameState.score }
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
func newmap aMap
|
|
aV = [
|
|
[1,1,3,0,0,2,1,1],
|
|
[1,3,0,0,0,2,1,1],
|
|
[1,1,1,3,0,2,1,1],
|
|
[1,1,1,3,0,0,0,0],
|
|
[0,0,0,0,2,1,1,1],
|
|
[0,0,2,1,1,1,1,1],
|
|
[0,0,0,2,1,1,1,1],
|
|
[1,1,1,3,0,2,1,1],
|
|
[1,1,1,1,1,3,0,0],
|
|
[3,0,0,2,1,1,1,1],
|
|
[3,0,0,2,3,0,0,2]
|
|
]
|
|
for x = 10 to 24 step 4
|
|
aVar = aV[ (random(10)+1) ]
|
|
for y = 1 to 8
|
|
aMap[y][x] = aVar[y]
|
|
next
|
|
next
|
|
|
|
func checkwin ogame
|
|
if oGameState.score = 3000
|
|
oGameState.gameresult = true
|
|
oGameState.playerwin = true
|
|
oGame {
|
|
text {
|
|
point = 400
|
|
size = 30
|
|
nStep = 3
|
|
file = "fonts/pirulen.ttf"
|
|
text = "You Win !!!"
|
|
x = 500 y=10
|
|
state = func ogame,oself {
|
|
if oself.y >= 400
|
|
ogame.shutdown = true
|
|
oGameState.Score = 0
|
|
ok
|
|
}
|
|
}
|
|
}
|
|
ok
|
|
|
|
Class GameState
|
|
down = 3
|
|
gameresult = false
|
|
Score = 0
|
|
startplay=false
|
|
lastcol = 0
|
|
playerwin = false
|