新建vc程序文件方法/步骤: 1,打开VC---新建------工程名称-----Win32 Console Application---确定-------一个空工程----完成-------确定。 2,打开VC---新建----文件名-----c++source file----确定。 3,输入代码----组建----点击编译-----点击组建-----点击执行。 完全正确例题<C++贪吃蛇小游戏> #include<iostream.h> #include<windows.h> #include<time.h> #include<stdlib.h> #include<conio.h> #define N 21 void gotoxy(int x,int y)//位置函数 { COORD pos; pos.X=2*x; pos.Y=y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos); } void color(int a)//颜色函数 { SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a); } void init(int apple[2])//初始化函数(初始化围墙、显示信息、苹果) { int i,j;//初始化围墙 int wall[N+2][N+2]={{0}}; for(i=1;i<=N;i++) { for(j=1;j<=N;j++) wall[i][j]=1; } color(11); for(i=0;i<N+2;i++) { for(j=0;j<N+2;j++) { if(wall[i][j]) cout<<"■"; else cout<<"□" ; } cout<<endl; } gotoxy(N+3,1);//显示信息 color(20); cout<<"按 W S A D 移动方向"<<endl; gotoxy(N+3,2); color(20); cout<<"按任意键暂停"<<endl; gotoxy(N+3,3); color(20); cout<<"得分:"<<endl; apple[0]=rand()%N+1;//苹果 apple[1]=rand()%N+1; gotoxy(apple[0],apple[1]); color(12); cout<<"●"<<endl; } int main() { int i,j; int** snake=NULL; int apple[2]; int score=0; int tail[2]; int len=3; char ch='p'; srand((unsigned)time(NULL)); init(apple); snake=(int**)realloc(snake,sizeof(int*)*len); for(i=0;i<len;i++) snake[i]=(int*)malloc(sizeof(int)*2); for(i=0;i<len;i++) { snake[i][0]=N/2; snake[i][1]=N/2+i; gotoxy(snake[i][0],snake[i][1]); color(14); cout<<"★"<<endl; } while(1)//进入消息循环 { tail[0]=snake[len-1][0]; tail[1]=snake[len-1][1]; gotoxy(tail[0],tail[1]); color(11); cout<<"■"<<endl; for(i=len-1;i>0;i--) { snake[i][0]=snake[i-1][0]; snake[i][1]=snake[i-1][1]; gotoxy(snake[i][0],snake[i][1]); color(14); cout<<"★"<<endl; } if(kbhit()) { gotoxy(0,N+2); ch=getche(); } switch(ch) { case 'w':snake[0][1]--;break; case 's':snake[0][1]++;break; case 'a':snake[0][0]--;break; case 'd':snake[0][0]++;break; default: break; } gotoxy(snake[0][0],snake[0][1]); color(14); cout<<"★"<<endl; Sleep(abs(200-0.5*score)); if(snake[0][0]==apple[0]&&snake[0][1]==apple[1])//吃掉苹果后蛇分数加1,蛇长加1 { score++; len++; snake=(int**)realloc(snake,sizeof(int*)*len); snake[len-1]=(int*)malloc(sizeof(int)*2); apple[0]=rand()%N+1; apple[1]=rand()%N+1; gotoxy(apple[0],apple[1]); color(12); cout<<"●"<<endl; gotoxy(N+5,3); color(20); cout<<score<<endl; } if(snake[0][1]==0||snake[0][1]==N||snake[0][0]==0||snake[0][0]==N)//撞到围墙后失败 { gotoxy(N/2,N/2); color(30); cout<<"失败!!!"<<endl; for(i=0;i<len;i++) free(snake[i]); Sleep(INFINITE); exit(0); } } return 0; } 完全正确例题“推箱子”C代码: #include <stdio.h> #include <conio.h> #include<stdlib.h> #include<windows.h> int m =0; //m代表第几关 struct maps{short a[9][11]; }; struct maps map[5]={ 0,0,0,0,0,0,0,0,0,0,0, //共5关,每关9行11列 0,1,1,1,1,1,1,1,0,0,0, 0,1,0,0,0,0,0,1,1,1,0, 1,1,4,1,1,1,0,0,0,1,0, //0空地,1墙 1,5,0,0,4,0,0,4,0,1,0, //4是箱子,5是人 1,0,3,3,1,0,4,0,1,1,0, //3是目的地 1,1,3,3,1,0,0,0,1,0,0, //7是箱子在目的地(4+3) 0,1,1,1,1,1,1,1,1,0,0, //8是人在目的地(5+3) 0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0, 0,0,1,1,1,1,0,0,0,0,0, 0,0,1,5,0,1,1,1,0,0,0, 0,0,1,0,4,0,0,1,0,0,0, 0,1,1,1,0,1,0,1,1,0,0, 0,1,3,1,0,1,0,0,1,0,0, 0,1,3,4,0,0,1,0,1,0,0, 0,1,3,0,0,0,4,0,1,0,0, 0,1,1,1,1,1,1,1,1,0,0, 0,0,0,0,0,0,0,0,0,0,0, 0,0,0,1,1,1,1,1,1,1,0, 0,0,1,1,0,0,1,0,5,1,0, 0,0,1,0,0,0,1,0,0,1,0, 0,0,1,4,0,4,0,4,0,1,0, 0,0,1,0,4,1,1,0,0,1,0, 1,1,1,0,4,0,1,0,1,1,0, 1,3,3,3,3,3,0,0,1,0,0, 1,1,1,1,1,1,1,1,1,0,0, 0,1,1,1,1,1,1,1,1,1,0, 0,1,0,0,1,1,0,0,0,1,0, 0,1,0,0,0,4,0,0,0,1,0, 0,1,4,0,1,1,1,0,4,1,0, 0,1,0,1,3,3,3,1,0,1,0, 1,1,0,1,3,3,3,1,0,1,1, 1,0,4,0,0,4,0,0,4,0,1, 1,0,0,0,0,0,1,0,5,0,1, 1,1,1,1,1,1,1,1,1,1,1, 0,0,0,0,0,0,0,0,0,0,0, 0,0,0,1,1,1,1,1,1,0,0, 0,1,1,1,0,0,0,0,1,0,0, 1,1,3,0,4,1,1,0,1,1,0, 1,3,3,4,0,4,0,0,5,1,0, 1,3,3,0,4,0,4,0,1,1,0, 1,1,1,1,1,1,0,0,1,0,0, 0,0,0,0,0,1,1,1,1,0,0, 0,0,0,0,0,0,0,0,0,0,0 }; void DrMap( ) //绘制地图 { CONSOLE_CURSOR_INFO cursor_info={1,0}; //隐藏光标的设置 SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info); printf("\n\n \t\t\b推箱子"); printf("\n \t"); for (int i = 0; i < 9; i++) {for (int j = 0; j < 11; j++) {switch (map[m].a[i][j]) {case 0: printf(" "); break; case 1: printf("■"); break; case 3: printf("◎");break; case 4: printf("□"); break; case 5: printf("♀"); break; //5是人 case 7: printf("□"); break; //4 + 3箱子在目的地中 case 8: printf("♀");break; // 5 + 3人在目的地中 } } printf("\n\t"); } } void gtxy(int x, int y) //控制光标位置的函数 { COORD coord; coord.X = x; coord.Y = y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord); } void start( ) //开始游戏 { int r, c; //人的下标 for (int i = 0; i < 9; i++) { for (int j = 0; j < 11; j++) {if (map[m].a[i][j] == 5||map[m].a[i][j]==8) { r = i; c = j; } } //i j 人的下标 } char key; key = getch( ); switch (key) {case 'W': case 'w': case 72: if (map[m]. a[r - 1][c] == 0|| map[m]. a [r - 1][c] == 3) { gtxy(2*c+8,r-1+3); printf("♀"); // gtxy(2*c+8,r-1+3)是到指定位置输出字符 if(map[m]. a[r ][c] == 5){gtxy(2*c+8,r+3); printf(" "); } if(map[m]. a[r ][c] == 8){gtxy(2*c+8,r+3); printf("◎");} map[m]. a [r - 1][c] += 5; map[m]. a [r][c] -= 5; } else if (map[m]. a [r - 1][c] == 4 || map[m]. a [r - 1][c] == 7) { if (map[m]. a [r - 2][c] == 0 || map[m]. a [r - 2][c] == 3) { gtxy(2*c+8,r-2+3); printf("□"); gtxy(2*c+8,r-1+3); printf("♀"); if(map[m]. a[r ][c] == 5){gtxy(2*c+8,r+3); printf(" "); } if(map[m]. a[r ][c] == 8){gtxy(2*c+8,r+3); printf("◎");} map[m]. a [r - 2][c] += 4; map[m]. a [r - 1][c] += 1; map[m]. a [r][c] -= 5; } } break; case 'S': case 's': case 80: if (map[m]. a [r + 1][c] == 0 || map[m]. a [r + 1][c] == 3) { gtxy(2*c+8,r+1+3); printf("♀"); if(map[m]. a[r ][c] == 5){gtxy(2*c+8,r+3); printf(" "); } if(map[m]. a[r ][c] == 8){gtxy(2*c+8,r+3); printf("◎");} map[m]. a [r + 1][c] += 5; map[m]. a [r][c] -= 5; } else if (map[m]. a [r + 1][c] == 4 || map[m]. a [r+ 1][c] == 7) { if (map[m]. a [r + 2][c] == 0 || map[m]. a [r + 2][c] == 3) { gtxy(2*c+8,r+2+3); printf("□"); gtxy(2*c+8,r+1+3); printf("♀"); if(map[m]. a[r ][c] == 5){gtxy(2*c+8,r+3); printf(" "); } if(map[m]. a[r ][c] == 8){gtxy(2*c+8,r+3); printf("◎");} map[m]. a [r + 2][c] += 4; map[m]. a [r + 1][c] += 1; map[m]. a [r][c] -= 5; } }break; case 'A': case 'a': case 75: if (map[m]. a [r ][c - 1] == 0 || map[m]. a [r ][c - 1] == 3) { gtxy(2*(c-1)+8,r+3); printf("♀"); if(map[m]. a[r ][c] == 5){gtxy(2*c+8,r+3); printf(" "); } if(map[m]. a[r ][c] == 8){gtxy(2*c+8,r+3); printf("◎");} map[m]. a [r ][c - 1] += 5; map[m]. a [r][c] -= 5; } else if (map[m]. a [r][c - 1] == 4 || map[m]. a [r][c - 1] == 7) {if (map[m]. a [r ][c - 2] == 0 || map[m]. a [r ][c - 2] == 3) { gtxy(2*(c-2)+8,r+3); printf("□"); gtxy(2*(c-1)+8,r+3); printf("♀"); if(map[m]. a[r ][c] == 5){gtxy(2*c+8,r+3); printf(" "); } if(map[m]. a[r ][c] == 8){gtxy(2*c+8,r+3); printf("◎");} map[m]. a [r ][c - 2] += 4; map[m]. a [r ][c - 1] += 1; map[m]. a [r][c] -= 5; } }break; case 'D': case 'd': case 77: if (map[m]. a [r][c + 1] == 0 || map[m]. a [r][c + 1] == 3) { gtxy(2*(c+1)+8,r+3); printf("♀"); if(map[m]. a[r ][c] == 5){gtxy(2*c+8,r+3); printf(" "); } if(map[m]. a[r ][c] == 8) {gtxy(2*c+8,r+3); printf("◎");} map[m]. a [r][c + 1] += 5; map[m]. a [r][c] -= 5; } else if (map[m]. a [r][c + 1] == 4 || map[m]. a [r][c + 1] == 7) { if (map[m]. a [r][c + 2] == 0 || map[m]. a [r][c + 2] == 3) { gtxy(2*(c+2)+8,r+3); printf("□"); gtxy(2*(c+1)+8,r+3); printf("♀"); if(map[m]. a[r ][c] == 5){gtxy(2*c+8,r+3); printf(" "); } if(map[m]. a[r ][c] == 8){gtxy(2*c+8,r+3); printf("◎");} map[m]. a [r][c + 2] += 4; map[m]. a [r][c + 1] += 1; map[m]. a [r][c] -= 5; } }break; } } int ifwan( ) //是否完成(1是0否) { if(m==0){if(map[m].a[5][2]==7&& map[m].a[5][3]==7&& map[m].a[6][2]==7&& map[m].a[6][3]==7) return 1;} if(m==1){if(map[m].a[5][2]==7&& map[m].a[6][2]==7&& map[m].a[7][2]==7) return 1;} if(m==2){if(map[m].a[7][1]==7&& map[m].a[7][2]==7&& map[m].a[7][3]==7&& map[m].a[7][4]==7&& map[m].a[7][5]==7) return 1;} if(m==3){if(map[m].a[4][4]==7&& map[m].a[4][5]==7&& map[m].a[4][6]==7&& map[m].a[5][4]==7&& map[m].a[5][5]==7&& map[m].a[5][6]==7) return 1;} if(m==4){if(map[m].a[3][2]==7&& map[m].a[4][1]==7&& map[m].a[4][2]==7&& map[m].a[5][1]==7&& map[m].a[5][2]==7) return 1;} return 0; } int main( ) //主函数 { while (1) { system("cls"); DrMap( ); while (1) { start( ); if(ifwan()){printf("\007");break;} //完成后响铃 } m+=1; } return 0; } 全正确例题:数字版“拼图”C代码: #include<stdio.h> #include<stdlib.h> #include<conio.h> #include<time.h> #include<windows.h> int i, j, r, k; //i、j、r用于循环, k存放随机数值 int m, n; // m、n是当前空位的下标 int a[4][4]; //存储4×4共16个数字的数组 void show(void); //输出界面 void csh(void); //初始化界面 int yes(void); //判断排序是否成功(1是0否) void up(void); //数字向上移动到空位(空位则下移) void down(void); //数字向下移 void left(void); //数字向左移 void rght(void); //数字向右移 void inkey(void); //按键操作 void gtxy(int x, int y) ; //控制光标位置的函数 int main(void) { while(1) { csh( ); while(1) { inkey(); show(); if ( yes( ) ) { gtxy(6,12); printf("你成功了! 再来一局y/n?"); break; } } if(getch( )=='n')break; } return 0; } void csh(void) //初始化 { r=0; CONSOLE_CURSOR_INFO cursor_info={1,0}; //以下两行是隐藏光标的设置 SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info); for(i=0;i<4;i++) //给数组a依序赋值 for(j=0;j<4;j++) { if (i==3 && j==3) a[i][j]=0; else a[i][j]=1+r++; } m=3; n=3; //记下空格(值为0)的下标 down( ); rght( ); rght( ); down( ); //预演4步 srand((unsigned)time(0)); //初始化随机数发生器 for(r=0;r<500;r++) //将数组各值打乱 { k=rand( )%(4); switch(k) { case 0: { up( ); break; } case 1: {down( ); break; } case 2: { left( ); break; } case 3: { rght( ); break; } } } system("cls"); printf("\n\n\t\t 数字拼图"); printf("\n\t┌──────┬──────┬──────┬──────┐"); printf("\n\t│ │ │ │ │"); printf("\n\t├──────┼──────┼──────┼──────┤"); printf("\n\t│ │ │ │ │"); printf("\n\t├──────┼──────┼──────┼──────┤"); printf("\n\t│ │ │ │ │"); printf("\n\t├──────┼──────┼──────┼──────┤"); printf("\n\t│ │ │ │ │"); printf("\n\t└──────┴──────┴──────┴──────┘"); show( ); } void show(void) //输出界面 { for(i=0;i<4;i++) for(j=0;j<4;j++) //gtxy(7*j+9, 2*i+4)是光标到指定位置输出数字 { gtxy(7*j+9,2*i+4); if(a[i][j]==0)printf(" │"); else if(a[i][j]>9)printf(" %d │",a[i][j]); else printf(" %d │",a[i][j]); } } void inkey(void) //按键操作 { int key; key=getch( ); switch(key) { case 72: { up( ); break; } case 80: {down( ); break; } case 75: {left( ); break; } case 77: { rght( ); break; } } } void up(void) //向上移动 { if (m!=3) //空位不得在下边界 { a[m][n]=a[m+1][n]; m++; a[m][n]=0; } } void down(void) //向下移动 { if (m!=0) //空位不得在上边界 { a[m][n]=a[m-1][n]; m--; a[m][n]=0; } } void left(void) //向左移动 { if (n!=3) //空位不得在右边界 { a[m][n]=a[m][n+1]; n++; a[m][n]=0; } } void rght(void) //向右移动 { if (n!=0) //空位不得在左边界 { a[m][n]=a[m][n-1]; n--; a[m][n]=0; } } int yes(void) //判断是否成功 { r=0; for(i=0;i<4;i++) for(j=0;j<4;j++) { if (a[i][j]!=1+r++) return (r==16)?1:0; } } void gtxy(int x, int y) //控制光标位置的函数 { COORD coord; coord.X = x; coord.Y = y; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord); } |
|