/*
混合C++、JS、python、Lisp、汇编
1种语言,5种语法
*/
main
{
//C++
vector 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 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 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
}