/*
混合C++、JS、python、Lisp、汇编
1种语言,5种语法
*/ main
{
//C++
vector<int> v;
v.push(2);
putsl(v.size());
if(v.count()==1)
{
putsl("abc");
} //JS
var a=function(x){
return x*2;
}
putsl(a(3));
a={90,91};
putsl(a[1]); //python
b=2
if b==2
putsl 1
putsl 2
elif b==3
putsl 99 //Lisp
[= b 3]
[rf printl b]
[= b [+ 1 3]]
[rf printl b] //汇编
mov b,4
add b,5
putsl(b)
}
输出是:
4
abc
6
91
1
2
3
4
9
RPP已经成功从C++内核升级到了lisp内核,欢迎下载试用。
光速编译,无限可能,尽在RPP。(音up)
/*
控制台贪食蛇
*/ int g_std_out
rbuf<int> g_arr
int g_next=10
int g_food void main()
{
g_std_out=stdcall("GetStdHandle",-11)
g_arr.push(105) CONSOLE_CURSOR_INFO cur_info
cur_info.dwSize=1
cur_info.bVisible=0
stdcall("SetConsoleCursorInfo",g_std_out,&cur_info)
rf.cmd("mode con cols=66 lines=35") init
rf.srand
start=rf.tick
food for
key
if rf.tick-start<100
continue
start=rf.tick
ifn check
return
g_arr.push_front(g_arr[0]+g_next)
if g_food!=g_arr[0]
g_arr.pop
else
food
update
} void gotoxy(int x,int y)
{
COORD pos
pos.x=x
pos.y=y
int temp
mov temp,pos
stdcall("SetConsoleCursorPosition",g_std_out,temp)
} void update()
{
for i=0 to 199
gotoxy(i%10+1,i/10+1)
if g_arr.exist(i)
puts("O")
elif i==g_food
puts("$")
else
puts(" ")
} void init()
{
for i=0 to 11
for j=0 to 21
if i==0||i==11||j==0||j==21
gotoxy(i,j)
puts("#")
} void key()
{
if stdcall("GetAsyncKeyState",0x26)
temp=-10
elif stdcall("GetAsyncKeyState",0x28)
temp=10
elif stdcall("GetAsyncKeyState",0x25)
temp=-1
elif stdcall("GetAsyncKeyState",0x27)
temp=1
else
return
if g_arr.count<2||g_arr.get(1)!=g_arr.get(0)+temp
g_next=temp
} int check()
{
temp=g_arr[0]+g_next
if temp<0||temp>199||int.abs(temp%10-g_arr[0]%10)>1||g_arr.exist(temp)
stdcall("MessageBoxA",0,('over len '+g_arr.count).cstr,"",0)
return false
return true
} void food()
{
g_food=rf.rand()%200
if g_arr.exist(g_food)
food
} struct CONSOLE_CURSOR_INFO
{
int dwSize
bool bVisible
} struct COORD
{
ushort x
ushort y
}
以下是一个彩色版本号:
/*
彩色版控制台贪食蛇
*/ int g_std_out
rbuf<int> g_arr
int g_next
int g_food void main()
{
begin:
init
start=rf.tick
for
key
if rf.tick-start<100
continue
start=rf.tick
ifn check
goto begin
g_arr.push_front(g_arr[0]+g_next)
if g_food!=g_arr[0]
g_arr.pop
else
food
update
} void update()
{
for i=0 to 199
gotoxy(i%10*2,i/10)
if g_arr.exist(i)
out("■")
elif i==g_food
out("★")
else
puts(" ")
} void init()
{
rf.srand
g_std_out=stdcall("GetStdHandle",-11)
g_next=10
g_arr.clear
g_arr.push(105)
food CONSOLE_CURSOR_INFO cur_info
cur_info.dwSize=1
cur_info.bVisible=0
stdcall("SetConsoleCursorInfo",g_std_out,&cur_info)
rf.cmd("mode con cols=20 lines=22")//保留一行留给输入法 stdcall("SetConsoleTextAttribute",g_std_out,0x0a)
gotoxy(0,20)
puts(" ******************")
} void key()
{
if stdcall("GetAsyncKeyState",0x26)
temp=-10
elif stdcall("GetAsyncKeyState",0x28)
temp=10
elif stdcall("GetAsyncKeyState",0x25)
temp=-1
elif stdcall("GetAsyncKeyState",0x27)
temp=1
else
return
if g_arr.count<2||g_arr.get(1)!=g_arr.get(0)+temp
g_next=temp
} bool check()
{
temp=g_arr[0]+g_next
if temp<0||temp>199||int.abs(temp%10-g_arr[0]%10)>1||g_arr.exist(temp)
stdcall("MessageBoxA",0,('over len '+g_arr.count).cstr,"",0)
return false
return true
} void food()
{
g_food=rf.rand()%200
if g_arr.exist(g_food)
food
} void out(char* s)
{
puts(rcode.utf8_to_gbk(s))
} void gotoxy(int x,int y)
{
COORD pos
pos.x=x
pos.y=y
stdcall("SetConsoleCursorPosition",g_std_out,pos)
} struct CONSOLE_CURSOR_INFO
{
int dwSize
bool bVisible
} struct COORD
{
ushort x
ushort y
}