![]() |
#2
wmf20142015-01-11 00:06
有点兴趣,帮你弄了个,在vc++6控制台下编译运行成功,你可以运行一下exe看效果。
![]() #include "stdafx.h" #include<stdio.h> #include<stdlib.h> #include<windows.h> #include<time.h> #include<conio.h> int map[50][40],oldmap[50][40]; clock_t Now_Time=clock(); void HideCursor(); void gotoxy(int x,int y); void HideCursor() { HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE); CONSOLE_CURSOR_INFO cursor_info={1,0}; SetConsoleCursorInfo(hOut,&cursor_info); } void gotoxy(int x,int y) { HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE); COORD loc={x,y}; SetConsoleCursorPosition(hOut,loc); } void drawmap() {//画整个图片 int x,y,j; char a; for(x=0;x<50;x++) for(y=0;y<40;y++) { gotoxy(x,y); j=map[x][y]; if(j==0) a=32; if(j==1) a=48; if(j==2) a=42; if(map[x][y]!=oldmap[x][y]) printf("%c",a); oldmap[x][y]=map[x][y]; } } void setplane(int x,int y) {//设置飞机 int i,j; for(i=0;i<50;i++) for(j=0;j<40;j++) if(map[i][j]==1) map[i][j]=0; for(i=y;i<(y+6);i++) map[x][i]=1; for(i=x-3;i<x+4;i++) map[i][y+2]=1; map[x-1][y+5]=1; map[x+1][y+5]=1; } void main() { int x,y,px=25,py=30,flag; long t1,t2; char a; system("mode con cols=50 lines=40"); for(x=0;x<50;x++) for(y=0;y<40;y++) { map[x][y]=0; oldmap[x][y]=-1; } HideCursor(); flag=true; drawmap(); Now_Time=clock(); t1=Now_Time; t2=Now_Time; while(1) { Now_Time=clock(); if(kbhit()) //判断击键 { a=getch(); if((a==97)&((px-3)>0)) px=px-1; if((a==115)&((py+6)<40)) py=py+1; if((a==100)&((px+3)<49)) px=px+1; if((a==119)&(py>0)) py=py-1; if(a==112) flag=!flag; //a:左移 s:下移 d:右移 w:上移 p:暂停 } if(flag) //处理刷新 { setplane(px,py); if(Now_Time-t1>200) { map[px][py-1]=2; t1=Now_Time; } //每200毫秒产生一颗子弹 if(Now_Time-t2>30) { t2=Now_Time; for(x=0;x<50;x++) for(y=0;y<40;y++) if(map[x][y]==2) { map[x][y]=0; if((y-1)>0) map[x][y-1]=2; //每30毫秒子弹上移 } } drawmap(); } } } 只有本站会员才能查看附件,请 登录 [ 本帖最后由 wmf2014 于 2015-1-11 00:11 编辑 ] |
#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<time.h>
#include<conio.h>
int map[50][40];
int x=25,y=30;
int ix,iy;
char key;
int Wait_Time=1;
int t=1;
clock_t Now_Time=clock();
void HideCursor();
void gotoxy(int x,int y);
void draw(int x,int y);
void plane();
void setmap();
void bullet(int x,int y);
void HideCursor()
{
HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);
CONSOLE_CURSOR_INFO cursor_info={1,0};
SetConsoleCursorInfo(hOut,&cursor_info);
}
void gotoxy(int x,int y)
{
HANDLE hOut=GetStdHandle(STD_OUTPUT_HANDLE);
COORD pos{x,y};
SetConsoleCursorPosition(hOut,pos);
}
void draw(int x,int y)
{
gotoxy(x,y);
printf("&");
}
void plane()
{
int Wait_Time=1;
if(clock()-Now_Time>=Wait_Time)
{
srand((unsigned)time(NULL));
ix=rand()%25;
iy=10;
gotoxy(ix,iy);
printf("$");
Now_Time=clock();
}
}
void bullet(int x,int y)
{
if(clock()-Now_Time>=Wait_Time)
{
y=y-1;
gotoxy(x,y);
printf("*");
Now_Time=clock();
}
}
int main()
{
system("mode con cols=50 lines=40");
for(ix=0;ix<50;ix++)
for(iy=0;iy<40;iy++)
{
map[ix][iy]=0;
}
draw(x,y);
HideCursor();
while(1)
{
plane();
if(kbhit())
{
switch(getch())
{
case 'w':{gotoxy(x,y);printf(" ");map[x][y]=1;draw(x,--y);break;}
case 's':{gotoxy(x,y);printf(" ");map[x][y]=1;draw(x,++y);break;}
case 'a':{gotoxy(x,y);printf(" ");map[x][y]=1;draw(--x,y);break;}
case 'd':{gotoxy(x,y);printf(" ");map[x][y]=1;draw(++x,y);break;}
}
if(map[x][y]==1)
bullet(x,y);
}
}
}