Skip to content

Instantly share code, notes, and snippets.

@contropist
Created January 8, 2020 00:44
Show Gist options
  • Save contropist/54e270054bb8e16fd0e29a5734699115 to your computer and use it in GitHub Desktop.
Save contropist/54e270054bb8e16fd0e29a5734699115 to your computer and use it in GitHub Desktop.
A CPP brainfuck compiler
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<windows.h>
#include<conio.h>
#include<ctime>
using namespace std;
clock_t t1,t2;
int ti;
POINT pt;
#define KEY_DOWN(VK_NONAME) ((GetAsyncKeyState(VK_NONAME)&0x8000)?1:0)
HWND hConsole=FindWindow("ConsoleWindowClass",NULL);
void colset(int a){
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);
}
void Goto(int Y,int X){
COORD C; C.X=X; C.Y=Y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),C);
}
void Hide(){
CONSOLE_CURSOR_INFO cursor_info={1,0};
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
}
bool got(){
GetCursorPos(&pt);
ScreenToClient(hConsole,&pt);
fflush(stdin);
return true;
}
int pan(int x,int y){
if(x<0||x>64) return 0;
y/=8;
++y;
if(y>=3&&y<=10) return 1;
if(y>=13&&y<=20) return 2;
if(y>=23&&y<=28) return 3;
if(y>=31&&y<=42) return 4;
if(y>=45&&y<=50) return 5;
if(y>=53&&y<=57) return 6;
if(y>=60&&y<=71) return 7;
if(y>=74&&y<=80) return 8;
return 0;
}
int by[10000002];
char lo[10000002],sc[10000002];
bool bp[10000002];
int now=1,ma,s=-1,nnnn=0,cs,mn;
bool ok=false,xr;
int q=0,lk;
bool aaa;
bool co(int be,int en){
if(be>en){
printf("Runtime Error: There's no anything in it\n");
for(int i=1;i<en;i++) printf("%c",lo[i]);
colset(12);
for(int i=en;i<=be;i++) printf("%c",lo[i]);
colset(15);
for(int i=be+1;i<=q;i++) printf("%c",lo[i]);
printf("\n");
aaa=false;
lk=lk+3+(q-1)/175;
printf("-----------------------------------\n");
}
int nn=be;
while(nn<=en){
if(lo[nn]=='<'){
--now;
if(now==0){
printf("Memory Limit Exceed: No variable position there\n");
for(int i=1;i<nn;i++) printf("%c",lo[i]);
colset(12);
printf("%c",lo[nn]);
colset(15);
for(int i=nn+1;i<=q;i++) printf("%c",lo[i]);
printf("\n");
aaa=false;
lk=lk+3+(q-1)/175;
printf("-----------------------------------\n");
}
}
else if(lo[nn]=='>'){
++now;
if(now>10000000){
printf("Memory Limit Exceed: I don\'t know why you want so big memories or... more than 1000,0000 bytes!\n");
aaa=false;
printf("-----------------------------------\n");
lk=lk+3+(q-1)/175;
}
}
else if(lo[nn]=='+'){
;
}
else if(lo[nn]=='-'){
;
}
else if(lo[nn]=='.'){
;
}
else if(lo[nn]==','){
;
}
else if(lo[nn]=='['){
int nnn=nn+1,no=1;
while(no!=0 && nnn<=en){
if(lo[nnn]=='[') ++no;
if(lo[nnn]==']') --no;
++nnn;
}
if(nnn!=en+1||no==0){
aaa=co(nn+1,nnn-2);
}
else{
printf("Compile Error: I can\'t find the last part there\n");
for(int i=1;i<nn;i++) printf("%c",lo[i]);
colset(12);
printf("%c",lo[nn]);
colset(15);
for(int i=nn+1;i<=q;i++) printf("%c",lo[i]);
printf("\n");
aaa=false;
printf("-----------------------------------\n");
lk=lk+3+(q-1)/175;
}
nn=nnn-1;
}
else if(lo[nn]==' '){;}
else if(lo[nn]==']'){
printf("Comlple Error: I can\'t the first part there\n");
for(int i=1;i<nn;i++) printf("%c",lo[i]);
colset(12);
printf("%c",lo[nn]);
colset(15);
for(int i=nn+1;i<=q;i++) printf("%c",lo[i]);
printf("\n");
aaa=false;
printf("-----------------------------------\n");
lk=lk+3+(q-1)/175;
}
else{
printf("Compile Error: I don\'t know what \'%c\' is\n",lo[nn]);
for(int i=1;i<nn;i++) printf("%c",lo[i]);
colset(12);
printf("%c",lo[nn]);
colset(15);
for(int i=nn+1;i<=q;i++) printf("%c",lo[i]);
printf("\n");
aaa=false;
printf("-----------------------------------\n");
lk=lk+3+(q-1)/175;
}
++nn;
}
return aaa;
}
int ssc,sg=0,sg2,sg3=0,sg4;
void sou1(int be,int en){
int nn=be;
while(nn<=en){
if(bp[nn]){
t2=clock();
ti=ti+(t2-t1);
Goto(7+sg3,0);
printf("Breakpoint there!\n");
for(int i=1;i<nn;i++) printf("%c",lo[i]);
colset(10);
printf("%c",lo[nn]);
colset(15);
for(int i=nn+1;i<=q;i++) printf("%c",lo[i]);
printf("\n");
printf("You can look at the data\n");
printf("+----++----+\n");
printf("|Look||Quit|\n");
printf("| L|| Q|\n");
printf("+----++----+\n");
while(1){
if(kbhit()){
char haha=getch();
if(haha=='L'||haha=='l'){
int h=(mn+9)/10;
for(int i=0;i<h;i++){
for(int j=0;j<10;j++){
if(i*10+j+1==now) colset(12);
printf(" %3d |",by[i*10+j+1]);
colset(15);
}
printf("\n");
if((now+9)/10==i+1){
for(int j=1;j<(now%10);j++) printf(" ");
printf(" ^^^\n");
}
}
printf("Continue...\n");
Sleep(3000);
Goto(7+sg3,0);
printf(" \n");
for(int i=1;i<=q;i++) printf(" ");
printf("\n");
printf(" \n");
printf(" \n");
printf(" \n");
printf(" \n");
printf(" \n");
for(int i=0;i<h;i++){
for(int j=0;j<10;j++){
printf(" ");
}
printf("\n");
if((now+9)/10==i+1){
for(int j=1;j<(now%10);j++) printf(" ");
printf(" \n");
}
}
printf(" \n");
break;
}
if(haha=='Q'||haha=='q'){
printf("Continuing\n");
Sleep(3000);
Goto(7+sg3,0);
printf(" \n");
for(int i=1;i<=q;i++) printf(" ");
printf("\n");
printf(" \n");
printf(" \n");
printf(" \n");
printf(" \n");
printf(" \n");
printf(" \n");
break;
}
}
if(KEY_DOWN(MOUSE_MOVED)){
got();
if(pt.y>(10+sg3+(q-1)/175)*16&&pt.y<(14+sg3+(q-1)/175)*16&&pt.x>0&&pt.x<48){
int h=(mn+9)/10;
for(int i=0;i<h;i++){
for(int j=0;j<10;j++){
if(i*10+j+1==now) colset(12);
printf(" %3d |",by[i*10+j+1]);
colset(15);
}
printf("\n");
if((now+9)/10==i+1){
for(int j=1;j<(now%10);j++) printf(" ");
printf(" ^^^\n");
}
}
printf("Continue...\n");
Sleep(3000);
Goto(7+sg3,0);
printf(" \n");
for(int i=1;i<=q;i++) printf(" ");
printf("\n");
printf(" \n");
printf(" \n");
printf(" \n");
printf(" \n");
printf(" \n");
for(int i=0;i<h;i++){
for(int j=0;j<10;j++){
printf(" ");
}
printf("\n");
if((now+9)/10==i+1){
for(int j=1;j<(now%10);j++) printf(" ");
printf(" \n");
}
}
printf(" \n");
break;
}
if(pt.y>(10+sg3+(q-1)/175)*16&&pt.y<(14+sg3+(q-1)/175)*16&&pt.x>48&&pt.x<96){
printf("Continue...\n");
Sleep(3000);
Goto(7+sg3,0);
printf(" \n");
for(int i=1;i<=q;i++) printf(" ");
printf("\n");
printf(" \n");
printf(" \n");
printf(" \n");
printf(" \n");
printf(" \n");
printf(" \n");
break;
}
}
}
t1=clock();
}
if(lo[nn]=='<') --now;
else if(lo[nn]=='>'){
++now;
if(mn<now) mn=now;
}
else if(lo[nn]=='+'){
++by[now];
while(by[now]<0) by[now]+=128;
while(by[now]>127) by[now]-=128;
}
else if(lo[nn]=='-'){
--by[now];
while(by[now]<0) by[now]+=128;
while(by[now]>127) by[now]-=128;
}
else if(lo[nn]=='.'){
while(by[now]<0) by[now]+=128;
while(by[now]>127) by[now]-=128;
if(by[now]=='\n'){
++sg3;
Goto(5+sg3,9);
printf("|");
for(int i=0;i<sg4;i++) printf(" ");
printf("|");
Goto(6+sg3,9);
printf("+");
for(int i=0;i<sg4;i++) printf("-");
printf("+");
sg=0;
}
else{
++sg;
if(sg>sg4){
for(int i=0;i<=sg3;i++){
Goto(5+i,9+sg);
printf(" |");
}
Goto(4,9+sg4+1);
for(int i=0;i<sg-sg4;i++) printf("-");
printf("+");
Goto(6+sg3,9+sg4+1);
for(int i=0;i<sg-sg4;i++) printf("-");
printf("+");
sg4=sg;
}
Goto(5+sg3,9+sg);
printf("%c",by[now]);
}
}
else if(lo[nn]==','){
Goto(7+sg3,0);
t2=clock();
ti=ti+t2-t1;
printf("Waiting for read in No. %d\n",nn);
for(int i=1;i<nn;i++) printf("%c",lo[i]);
colset(12);
printf("%c",lo[nn]);
colset(15);
for(int i=nn+1;i<=q;i++) printf("%c",lo[i]);
printf("\n");
char haha;
haha=getch();
by[now]=(int)haha;
if(by[now]==13){
Goto(1,10+sg2);
printf("--+");
Goto(2,10+sg2);
printf("\\n|");
Goto(3,10+sg2);
printf("--+");
sg2+=2;
by[now]=10;
}
else{
Goto(1,10+sg2);
printf("-+");
Goto(2,10+sg2);
printf("%c|",haha);
Goto(3,10+sg2);
printf("-+");
++sg2;
}
Goto(7+sg3,0);
printf(" \n");
for(int i=1;i<=q;i++) printf(" ");
t1=clock();
}
else if(lo[nn]=='['){
int nnn=nn+1,no=1;
while(no!=0){
if(lo[nnn]=='[') ++no;
if(lo[nnn]==']') --no;
++nnn;
}
while(by[now]!=0){
sou1(nn+1,nnn-2);
++cs;
if(cs>1000000){
Goto(7,0);
printf("\nRuntime Error: soo many loops or... more than 100,0000 times!\n");
++ssc;
return;
}
}
nn=nnn-1;
}
++nn;
}
}
int K=0;
bool com(){
now=1;
s=-1;
nnnn=0;
aaa=true;
return co(1,q);
}
void run(){
memset(by,0,sizeof(by));
system("cls");
Goto(0,0);
mn=1;
s=-1;
ssc=0;
printf("\n+-----+ ++\n");
printf("|Input| ||\n");
printf("+-----+ ++\n");
printf("+-----+ ++\n");
printf("|Ouput| ||\n");
printf("+-----+ ++");
sg=0;
sg2=0;
sg3=0;
sg4=0;
cs=0;
ti=0;
t1=clock();
sou1(1,q);
t2=clock();
ti=ti+t2-t1;
Goto(0,0);
printf("Use %d ms to run...",ti);
Sleep(1000);
}
void bpt(){
int qw=1;
colset(15);system("cls");
printf("\n---------------------\n");
int qwe=(q-1)/175+1;
Goto(3,0);
for(int i=0;i<qwe;i++){
for(int j=1;j<=(i==qwe-1?(q-1)%175+1:175);j++){
if(bp[i*175+j]) colset(10);
if(i*175+j==1) colset(12);
printf("%c",lo[i*175+j]);
colset(15);
}
}
printf("\n");
printf(" +----+\n");
printf(" | Up |\n");
printf(" | W|\n");
printf(" +----+\n");
printf("+----++----++-----+\n");
printf("|Left||Done||Right|\n");
printf("| A|| \\n|| D|\n");
printf("+----++----++-----+\n");
printf("+----++----+\n");
printf("|Quit||Down|\n");
printf("| Q|| S|\n");
printf("+----++----+\n");
printf("\n---------------------\n");
while(1){
if(kbhit()){
char hhhh=getch();
if(hhhh=='A'||hhhh=='a'||hhhh=='D'||hhhh=='d'
||hhhh=='S'||hhhh=='s'||hhhh=='W'||hhhh=='w'){
Goto((qw-1)/175+3,(qw-1)%175);
colset(15);
if(bp[qw]) colset(10);
printf("%c",lo[qw]);
}
if(hhhh=='A'||hhhh=='a'){
--qw;
if(qw<1) qw+=q;
while(lo[qw]=='['||lo[qw]==']'){
--qw;
if(qw<0) qw+=q;
}
Goto((qw-1)/175+3,(qw-1)%175);
colset(12);
printf("%c",lo[qw]);
}
else if(hhhh=='D'||hhhh=='d'){
++qw;
if(qw>q) qw-=q;
while(lo[qw]=='['||lo[qw]==']'){
++qw;
if(qw>q) qw-=q;
}
Goto((qw-1)/175+3,(qw-1)%175);
colset(12);
printf("%c",lo[qw]);
}
else if(hhhh=='w'||hhhh=='W'){
qw-=175;
if(qw<1){
while(qw<1) qw+=175;
}
while(lo[qw]=='['||lo[qw]==']'){
++qw;
if(qw>q) qw-=q;
}
Goto((qw-1)/175+3,(qw-1)%175);
colset(12);
printf("%c",lo[qw]);
}
else if(hhhh=='s'||hhhh=='S'){
qw+=175;
if(qw>q){
while(qw>q) qw-=175;
}
while(lo[qw]=='['||lo[qw]==']'){
++qw;
if(qw>q) qw-=q;
}
Goto((qw-1)/175+3,(qw-1)%175);
colset(12);
printf("%c",lo[qw]);
}
else if(hhhh==13){
bp[qw]=!bp[qw];
Goto(0,0);
colset(12);
if(bp[qw]) printf("Now there is a breakpoint.");
else printf("Now there is not a breakpoint.");
printf("Press or click to continue...");
while(1){
if(kbhit()||KEY_DOWN(MOUSE_MOVED)) return;
}
break;
}
if(hhhh=='Q'||hhhh=='q') break;
}
if(KEY_DOWN(MOUSE_MOVED)){
Sleep(100);
got();
if((pt.y>0+(4+(q-1)/175)*16&&pt.y<64+(4+(q-1)/175)*16&&pt.x>48&&pt.x<96)
||(pt.y>64+(4+(q-1)/175)*16&&pt.y<128+(4+(q-1)/175)*16&&pt.x>0&&pt.x<48)
||(pt.y>64+(4+(q-1)/175)*16&&pt.y<128+(4+(q-1)/175)*16&&pt.x>96&&pt.x<136)
||(pt.y>128+(4+(q-1)/175)*16&&pt.y<192+(4+(q-1)/175)*16&&pt.x>48&&pt.x<96)){
Goto((qw-1)/175+3,(qw-1)%175);
colset(15);
if(bp[qw]) colset(10);
printf("%c",lo[qw]);
}
if(pt.y>0+(4+(q-1)/175)*16&&pt.y<64+(4+(q-1)/175)*16&&pt.x>48&&pt.x<96){
qw-=175;
if(qw<1){
while(qw<1) qw+=175;
}
while(lo[qw]=='['||lo[qw]==']'){
++qw;
if(qw>q) qw-=q;
}
Goto((qw-1)/175+3,(qw-1)%175);
colset(12);
printf("%c",lo[qw]);
}
if(pt.y>64+(4+(q-1)/175)*16&&pt.y<128+(4+(q-1)/175)*16&&pt.x>0&&pt.x<48){
--qw;
if(qw<1) qw+=q;
while(lo[qw]=='['||lo[qw]==']'){
--qw;
if(qw<0) qw+=q;
}
Goto((qw-1)/175+3,(qw-1)%175);
colset(12);
printf("%c",lo[qw]);
}
if(pt.y>64+(4+(q-1)/175)*16&&pt.y<128+(4+(q-1)/175)*16&&pt.x>48&&pt.x<96){
bp[qw]=!bp[qw];
Goto(0,0);
colset(12);
if(bp[qw]) printf("Now there is a breakpoint.");
else printf("Now there is not a breakpoint.");
printf("Press or click to continue...");
if(kbhit()||KEY_DOWN(MOUSE_MOVED)) return;
break;
}
if(pt.y>64+(4+(q-1)/175)*16&&pt.y<128+(4+(q-1)/175)*16&&pt.x>96&&pt.x<136){
++qw;
if(qw>q) qw-=q;
while(lo[qw]=='['||lo[qw]==']'){
++qw;
if(qw>q) qw-=q;
}
Goto((qw-1)/175+3,(qw-1)%175);
colset(12);
printf("%c",lo[qw]);
}
if(pt.y>128+(4+(q-1)/175)*16&&pt.y<192+(4+(q-1)/175)*16&&pt.x>48&&pt.x<96){
qw+=175;
if(qw>q){
while(qw>q) qw-=175;
}
while(lo[qw]=='['||lo[qw]==']'){
++qw;
if(qw>q) qw-=q;
}
Goto((qw-1)/175+3,(qw-1)%175);
colset(12);
printf("%c",lo[qw]);
}
if(pt.y>128+(4+(q-1)/175)*16&&pt.y<192+(4+(q-1)/175)*16&&pt.x>0&&pt.x<48) return;
}
}
colset(15);system("cls");
}
bool r;
char haha;
void mdf(){
colset(15);system("cls");
colset(15);
printf("+----+\n");
printf("|Done|\n");
printf("| D|\n");
printf("+----+\n");
printf("Put the code there...\n");
printf("Input D/d or press to select\n");
printf("Because of some reason , we will change it to 1 line...\n");
memset(lo,0,sizeof(lo));
q=0;
while(1){
if(kbhit()){
haha=getch();
if(haha=='D'||haha=='d') return;
if(haha==13) haha=10;
if(haha==8){
if(q!=0) --q;
Goto(7+q/175,q%175);
printf(" ");
}
else if(haha==10||haha==32||haha==9){;}
else{
lo[++q]=haha;
Goto(7+(q-1)/175,(q-1)%175);
printf("%c",haha);
}
}
if(KEY_DOWN(MOUSE_MOVED)){
got();
if(pt.y>0&&pt.y<64&&pt.x>0&&pt.x<48) return;
}
}
}
int mnn,zz,zz2,uu;
bool aaaa;
void im(int be,int en){
int nn=be;
int su=(q-1)/175+1;
while(nn<=en&&aaaa){
got();
if(KEY_DOWN(MOUSE_MOVED)){
if(pt.y>32&&pt.y<48){
colset(15);
Goto(1,2);
printf("Pause...");
while(KEY_DOWN(MOUSE_MOVED)){
Sleep(50);
got();
if(pt.x<0) pt.x=0;
if(pt.x>790) pt.x=790;
Goto(2,uu/5-2);
printf("---");
Goto(2,99);
printf(" ");
Goto(2,pt.x/8);
printf("■");
uu=pt.x/16*10+10;
Goto(0,8);
printf("%3d",uu);
}
Goto(1,2);
printf(" ");
}
if(pt.y>0&&pt.y<64&&pt.x>808&&pt.x<856) return;
}
if(kbhit()){
char haha=getch();
if(haha==9){
aaaa=false;
return;
}
if(haha==-32){
haha=getch();
colset(15);
Goto(2,uu/5-2);
printf("---");
Goto(2,99);
printf(" ");
if(haha==75) uu=uu-10;
if(haha==77) uu=uu+10;
if(uu<10) uu=10;
if(uu>500) uu=500;
Goto(2,uu/5-2);
printf("■");
Goto(0,8);
printf("%3d",uu);
colset(12);
}
}
if(zz!=now){
colset(11);
Goto(4*(zz/34)+9+su,5*(zz%34)+1);
printf(" ");
zz=now;
Goto(4*(now/34)+9+su,5*(now%34)+1);
printf("^^^");
colset(15);
}
Goto((nn-1)/175+6,(nn-1)%175);
colset(12);
printf("%c",lo[nn]);
colset(11);
if(zz2!=nn){
Goto((zz2-1)/175+6,(zz2-1)%175);
colset(11);
printf("%c",lo[zz2]);
}
zz2=nn;
if(lo[nn]=='<'){
colset(11);
Goto(4*(now/34)+9+su,5*(now%34)+1);
printf(" ");
--now;
Goto(4*(now/34)+9+su,5*(now%34)+1);
printf("^^^");
zz=now;
colset(15);
}
else if(lo[nn]=='>'){
colset(11);
Goto(4*(now/34)+9+su,5*(now%34)+1);
printf(" ");
++now;
Goto(4*(now/34)+9+su,5*(now%34)+1);
printf("^^^");
colset(15);
if(mnn<now){
mnn=now;
colset(15-now%8);
Goto(4*(now/34)+6+su,5*(now%34));
printf("+---+");
Goto(4*(now/34)+7+su,5*(now%34));
printf("| 0|");
Goto(4*(now/34)+8+su,5*(now%34));
printf("+---+");
}
zz=now;
}
else if(lo[nn]=='+'){
++by[now];
while(by[now]<0) by[now]+=128;
while(by[now]>127) by[now]-=128;
Goto(4*(now/34)+7+su,5*(now%34)+1);
colset(15-now%8);
printf("%3d",by[now]);
}
else if(lo[nn]=='-'){
--by[now];
while(by[now]<0) by[now]+=128;
while(by[now]>127) by[now]-=128;
Goto(4*(now/34)+7+su,5*(now%34)+1);
colset(15-now%8);
printf("%3d",by[now]);
}
else if(lo[nn]=='.'){
while(by[now]<0) by[now]+=128;
while(by[now]>127) by[now]-=128;
Goto(5,++s);
if(by[now]!=10) printf("%c",by[now]);
else{
printf("\\n");
++s;
}
}
else if(lo[nn]==','){
Goto(4,0);
colset(12);
printf("Waiting for read");
char haha;
while(1){
got();
if(KEY_DOWN(MOUSE_MOVED)){
if(pt.y>32&&pt.y<48){
colset(15);
Goto(1,2);
printf("Pause...");
while(KEY_DOWN(MOUSE_MOVED)){
Sleep(50);
got();
if(pt.x<0) pt.x=0;
if(pt.x>790) pt.x=790;
Goto(2,uu/5-2);
printf("---");
Goto(2,99);
printf(" ");
Goto(2,pt.x/8);
printf("■");
uu=pt.x/16*10+10;
Goto(0,8);
printf("%3d",uu);
}
Goto(1,2);
printf(" ");
colset(12);
}
if(pt.y>0&&pt.y<64&&pt.x>808&&pt.x<856) return;
}
if(kbhit()){
haha=getch();
if(haha==9){
aaaa=false;
return;
}
else if(haha==-32){
haha=getch();
colset(15);
Goto(2,uu/5-2);
printf("---");
Goto(2,99);
printf(" ");
if(haha==75) uu=uu-10;
if(haha==77) uu=uu+10;
if(uu<10) uu=10;
if(uu>500) uu=500;
Goto(2,uu/5-2);
printf("■");
Goto(0,8);
printf("%3d",uu);
colset(12);
}
else{
by[now]=(int)haha;
break;
}
}
}
if(by[now]==13) by[now]=10;
Goto(4,0);
printf(" ");
Goto(4*(now/34)+7+su,5*(now%34)+1);
colset(15-now%8);
printf("%3d",by[now]);
}
else if(lo[nn]=='['){
int nnn=nn+1,no=1;
while(no!=0){
if(lo[nnn]=='[') ++no;
if(lo[nnn]==']') --no;
++nnn;
}
while(by[now]!=0) im(nn+1,nnn-2);
nn=nnn-1;
}
++nn;
Sleep(uu);
}
}
void imt(){
memset(by,0,sizeof(by));
colset(15);system("cls");
printf("You will use this when you use less memorys , ouput , code and time.\n");
printf("Are you ");
colset(12);
printf("SURE");
colset(15);
printf("?\n");
printf("+---++--+\n");
printf("|Yes||No|\n");
printf("| Y|| N|\n");
printf("+---++--+\n");
char qwer;
do{
if(kbhit()) qwer=getch();
got();
}while((qwer!='Y'&&qwer!='y'&&qwer!='N'&&qwer!='n') && !(KEY_DOWN(MOUSE_MOVED)&&pt.y>32&&pt.y<96&&pt.x>0&&pt.x<72));
if(KEY_DOWN(MOUSE_MOVED)){
if(pt.x>40&&pt.x<72) return;
}
if(qwer=='N'||qwer=='n') return;
uu=100;
colset(15);system("cls");
Goto(0,0);
printf("Speed : 100 ms +----+\n");
printf("← → |Exit|\n");
printf("------------------■------------------------------------------------------------------------------- | Tab|\n");
printf(" +----+\n");
mnn=0;
s=6;
now=0;
zz2=1;
int sua=(q-1)/175+1;
Goto(6+sua,0);
colset(15-now%8);
printf("+---+\n| 0|\n+---+\n ^^^ ");
zz=1;
Goto(5,0);
printf("Ouput:)");
Goto(6,0);
uu=100;
for(int i=0;i<sua;i++){
for(int j=0;j<(i==sua-1?(q-1)%175+1:175);j++){
colset(11);
printf("%c",lo[i*175+j+1]);
}
}
colset(15);
aaaa=true;
im(1,q);
if(haha==9) return;
Goto(4,0);
printf("Press to continue...");
getch();
colset(15);system("cls");
}
void hlp(){
system("cls");
printf("Brainfuck is a minimal computer language created by Urban Muller in 1993 \n");
printf("> pointer plus one \n< pointer minus one \n+ pointer to byte plus one \n- pointer to byte minus one \n");
printf(". Output pointer pointing unit content (ASCII code) \n, input content to pointer pointing unit (ASCII code) \n");
printf("[ jumps back to the next instruction of the corresponding ] instruction if the cell value the pointer points to is zero \n");
printf("] jumps forward to the corresponding [ next instruction of instruction if the cell value that the pointer points to is not zero.\n");
printf("+-----+\n|Close|\n| C|\n+-----+");
while(1){
Sleep(50); got();
if(kbhit()){
char haha=getch();
if(haha=='C'||haha=='c') return;
}
if(KEY_DOWN(MOUSE_MOVED) && pt.y>=144 && pt.y<=208)
if(pt.x>=4 && pt.x<=56) return;
}
}
void imf(){
colset(15);system("cls");
printf("This is a Brainfuck Compile System\n");
printf("Creater Imformatiom |Modifier Imformation\n");
printf("Name:\n");
printf("++++++++[->++++++++<]>+++ |+++++++++[->+++++++++<]>+\n");
printf("++<]>+++.<.<++++++[->++++ |++++++++.++++++++.<++++[-\n");
printf("+++[->+++<]>+.< |>++++<]>+++++.< \n");
printf("Nickname:\n");
printf("++++++++++[->++++++++++<] |++++++++[->++++++++<]>++.\n");
printf(">++++++++++++++++.<+++[-> |<++++++[->++++++<]>++++++\n");
printf("---<]>--.--.--.<+++[->+++ |+++.++++++++.<++++[->----\n");
printf("<]>++++.<++++++++[->----- |<]>--.+++++++++.<+++++++[\n");
printf("---<]>.--..+++++.< |->-------<]>------------.\n");
printf(" |+.+.<\n");
printf("-------------------------------------------------------\n");
printf("+-----+\n");
printf("|Close|\n");
printf("| C|\n");
printf("+-----+\n");
while(1){
Sleep(50);got();
if(kbhit()){
char haha=getch();
if(haha=='C'||haha=='c') break;
}
if(KEY_DOWN(MOUSE_MOVED) && pt.y>=224 && pt.y<=288)
if(pt.x>=4 && pt.x<=56) return;
}
getch();
colset(15);system("cls");
}
int main(){
colset(15);
system("mode con cols=175 lines=50");
Hide();
r=false;
xr=false;
memset(sc,0,sizeof(sc));
memset(by,0,sizeof(by));
memset(lo,0,sizeof(lo));
memset(bp,0,sizeof(bp));
while(1){
system("cls");
// fstream out("testlib.txt",ios::app);
colset(15);
printf("|+-------+ +-----+ +----+|");
printf("|+----------+ +----+|");
if(!r) colset(8);
printf("|+---+ +----------+ +-----+|\n");
colset(15);
printf("||Compile| |Write| |Edit||");
printf("||Imfomation| |Help||");
if(!r) colset(8);
printf("||Run| |Breakpoint| |Debug||\n");
colset(15);
printf("|| F9| | W| | E||");
printf("|| I| | H||");
if(!r) colset(8);
printf("||F10| | B| | F5||\n");
colset(15);
printf("|+-------+ +-----+ +----+|");
printf("|+----------+ +----+|");
if(!r) colset(8);
printf("|+---+ +----------+ +-----+|\n");
colset(15);
printf("+----------Coding----------+");
printf("+-------About--------+");
if(!r) colset(8);
printf("+-----------Running----------+\n");
colset(15);
while(kbhit()) haha=getch();
while(1){
Sleep(50); got();
if(kbhit()){
char haha=getch();
if(haha==0){
char haha2=getch();
if(haha2==63){
if(r){
imt();
break;
}
else{
Goto(5,0);
colset(12);
printf("Warning : Compile First");
colset(15);
}
}
if(haha2==67){
system("cls");
lk=1;
printf("-----------------------------------\n");
r=com();
if(r){
printf("Compile success!\n");
printf("-----------------------------------\n");
lk+=2;
}
printf("+-----+\n");
printf("|Close|\n");
printf("| C|\n");
printf("+-----+\n");
if(lk>45) lk=45;
while(1){
Sleep(50);got();
if(kbhit()){
char haha=getch();
if(haha=='C'||haha=='c') break;
}
if(KEY_DOWN(MOUSE_MOVED)){
if(pt.y>lk*16&&pt.y<lk*16+64&&pt.x>0&&pt.x<112) break;
}
}
break;
}
if(haha2==68){
if(r){
run();
break;
}
else{
Goto(5,0);
colset(12);
printf("Warning : Compile First");
colset(15);
}
}
}
if(haha=='W'||haha=='w'){
mdf();
r=false;
memset(bp,0,sizeof(bp));
break;
}
if(haha=='E'||haha=='e') return 0;
if(haha=='I'||haha=='i'){
imf();
break;
}
if(haha=='H'||haha=='h'){
hlp();
break;
}
if(haha=='B'||haha=='b'){
if(r){
bpt();
break;
}
else{
Goto(5,0);
colset(12);
printf("Warning : Compile First");
colset(15);
}
}
}
if(KEY_DOWN(MOUSE_MOVED)&&pan(pt.y,pt.x)){
if(pan(pt.y,pt.x)==1){
system("cls");
lk=1;
printf("-----------------------------------\n");
r=com();
if(r){
printf("Compile succeed!\n");
printf("-----------------------------------\n");
lk+=2;
}
printf("+-----+\n");
printf("|Close|\n");
printf("| C|\n");
printf("+-----+\n");
if(lk>45) lk=45;
while(1){
Sleep(50);got();
if(kbhit()){
char haha=getch();
if(haha=='C'||haha=='c') break;
}
if(KEY_DOWN(MOUSE_MOVED)){
if(pt.y>lk*16&&pt.y<lk*16+64&&pt.x>0&&pt.x<56) break;
}
}
break;
}
if(pan(pt.y,pt.x)==2){
mdf();
r=false;
break;
}
if(pan(pt.y,pt.x)==3) return 0;
if(pan(pt.y,pt.x)==4){
imf();
break;
}
if(pan(pt.y,pt.x)==5){
hlp();
break;
}
if(pan(pt.y,pt.x)==6){
if(!r){
Goto(5,0);
colset(12);
printf("Warning : Compile First");
colset(15);
}
else{
run();
break;
}
}
if(pan(pt.y,pt.x)==7){
if(!r){
Goto(5,0);
colset(12);
printf("Warning : Compile First");
colset(15);
}
else{
bpt();
break;
}
}
if(pan(pt.y,pt.x)==8){
if(!r){
Goto(5,0);
colset(12);
printf("Warning : Compile First");
colset(15);
}
else{
imt();
break;
}
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment