用vc或c++编写的一个小游戏代码,要有源代码,

要能在windows下能运行的,小游戏例如推箱子,贪吃蛇,计算器也行,要有图形的,求具体的编程代码,要能在vc++6... 要能在windows下能运行的,小游戏例如推箱子,贪吃蛇,计算器也行,要有图形的,求具体的编程代码,要能在vc++6 展开
 我来答
鬼火狼烟
推荐于2018-02-13 · TA获得超过6333个赞
知道大有可为答主
回答量:2275
采纳率:50%
帮助的人:2712万
展开全部
#include<graphics.h>
#include<stdlib.h>
#include<dos.h>
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define DOWN 0x5000
#define UP 0x4800
#define ESC 0x011b
int i,key;
int score=0;
int gamespeed=32000;
struct Food /*食物的结构体*/
{
int x; /*食物的横坐标*/
int y; /*食物的纵坐标*/
int yes; /*食物是否出现的变量*/
}food;
struct Snack /*蛇的结构体*/
{
int x[N];
int y[N];
int node; /*蛇的节数*/
int direction; /*蛇的方向*/
int life; /*蛇的生命,0活着,1死亡*/
}snake;
void Init(void); /*图形驱动*/
void Close(void); /*关闭游戏函数*/
void DrawK(void); /*画图函数*/
void GameOver(void);/*输出失败函数*/
void GamePlay(); /*游戏控制函数 主要程序*/
void PrScore(void); /*分数输出函数*/

DELAY(char ch)/*调节游戏速度*/
{
if(ch=='3')
{
delay(gamespeed); /*delay是延迟函数*/
delay(gamespeed);
}
else if(ch=='2')
{
delay(gamespeed);
}
}

Menu()/*游戏开始菜单*/
{
char ch;
printf("Please choose the gamespeed:\n");
printf("1-Fast 2-Normal 3-Slow\n");
printf("\nPlease Press The numbers..\n");
do
{ch=getch();}
while(ch!='1'&&ch!='2'&&ch!='3');
clrscr();
return(ch);
}

/*主函数*/
void main(void)
{
int ch;
ch=Menu();
Init();
DrawK();
GamePlay(ch);
Close();
}

void Init(void)
{
int gd=DETECT,gm;
initgraph(&gd,&gm,"c:\\tc");
cleardevice();
}

void DrawK(void)
{
setcolor(11);
setlinestyle(SOLID_LINE,0,THICK_WIDTH);
for(i=50;i<=600;i+=10)
{
rectangle(i,40,i+10,49); /*画出上边框*/
rectangle(i,451,i+10,460); /*画出下边框*/
}
for(i=40;i<=450;i+=10)
{
rectangle(50,i,59,i+10); /*画出左边框*/
rectangle(601,i,610,i+10); /*画出右边框*/
}
}

void GamePlay(char ch)
{
randomize(); /*随机数发生器*/
food.yes=1; /*1代表要出现食物,0表示以存在食物*/
snake.life=0;
snake.direction=1;
snake.x[0]=100;snake.y[0]=100;
snake.x[1]=110;snake.y[1]=100;
snake.node=2;
PrScore();
while(1) /*可以重复游戏*/
{
while(!kbhit()) /*在没有按键的情况下蛇自己移动*/
{
if(food.yes==1) /*需要食物*/
{
food.x=rand()%400+60;
food.y=rand()%350+60; /*使用rand函数随机产生食物坐标*/
while(food.x%10!=0)
food.x++;
while(food.y%10!=0)
food.y++; /*判断食物是否出现在整格里*/
food.yes=0; /*现在有食物了*/
}
if(food.yes==0) /*有食物了就要显示出来*/
{
setcolor(GREEN);
rectangle(food.x,food.y,food.x+10,food.y-10);
}
for(i=snake.node-1;i>0;i--) /*贪吃蛇的移动算法*/
{
snake.x[i]=snake.x[i-1];
snake.y[i]=snake.y[i-1]; /*贪吃蛇的身体移动算法*/
}

switch(snake.direction) /*贪吃蛇的头部移动算法,以此来控制移动*/
{
case 1:snake.x[0]+=10;break;
case 2:snake.x[0]-=10;break;
case 3:snake.y[0]-=10;break;
case 4:snake.y[0]+=10;break;
}
for(i=3;i<snake.node;i++) /*判断是否头部与身体相撞*/
{
if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0])
{
GameOver();
snake.life=1;
break;
}
}
/*下面是判断是否撞到墙壁*/
if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||snake.y[0]>455)
{
GameOver();
snake.life=1;
}
if(snake.life==1) /*如果死亡就退出循环*/
break;
if(snake.x[0]==food.x&&snake.y[0]==food.y) /*判断蛇是否吃到食物*/
{
setcolor(0);
rectangle(food.x,food.y,food.x+10,food.y-10); /*吃的食物后用黑色将食物擦去*/
snake.x[snake.node]=-20;snake.y[snake.node]=-20; /*现把增加的一节放到看不到的地方去*/

snake.node++;
food.yes=1;
score+=10;
PrScore();
}
setcolor(4); /*每次移动后将后面的身体擦去*/
for(i=0;i<snake.node;i++)
rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10);
delay(gamespeed);
DELAY(ch);
setcolor(0);
rectangle(snake.x[snake.node-1],snake.y[snake.node-1],snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);

}
if(snake.life==1)
break;
key=bioskey(0); /*接受按键*/
if(key==ESC)
break;
else
if(key==UP&&snake.direction!=4)/*判断是否改变方向*/
snake.direction=3;
else
if(key==RIGHT&&snake.direction!=2)
snake.direction=1;
else
if(key==LEFT&&snake.direction!=1)
snake.direction=2;
else
if(key==DOWN&&snake.direction!=3)
snake.direction=4;
}
}

void GameOver(void)
{
cleardevice();
setcolor(RED);
settextstyle(0,0,4);
outtextxy(200,200,"GAME OVER");
getch();
}

void PrScore(void)
{
char str[10];
setfillstyle(SOLID_FILL,YELLOW);
bar(50,15,220,35);
setcolor(6);
settextstyle(0,0,2);
sprintf(str,"scord:%d",score);
outtextxy(55,20,str);
}
void Close(void)
{
getch();
closegraph();
}

贪吃蛇
s605954350
2012-10-02 · TA获得超过353个赞
知道小有建树答主
回答量:212
采纳率:0%
帮助的人:206万
展开全部
恕我直言,5分对这样一个问题太少了。
毕竟控制台程序的这样类型的代码都值至少50分,更何况是可视化程序。
推荐楼主直接在度娘搜索吧,这样可以找到别人免费提供的用于教学的游戏代码,或者上知名的IT论坛也可以。
祝愿楼主能早日找到源代码。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
烽火杨州free
2019-04-07
知道答主
回答量:1
采纳率:0%
帮助的人:741
展开全部
#include<iostream>
#include<string.h>
#include<conio.h>
#include<stdlib.h>
#include<cstdio>
#include<time.h>
using namespace std;
int x=0,y=0,v=0;
char a[30][15],d;
int n=100,ap=2,ad=1,sum=0;
void pan(int i,int j)
{
if(a[i][j]=='1')
{
int s1=5;
s1-=ap+sum/10;
while(s1>0)
{ if((4-(ad+sum/30))>0)
n-=(4-(ad+sum/30));
s1-=ap+sum/10;
s1++;
}
sum++;
}
else if(a[i][j]=='2')
{
int s2=30;
s2-=ap+sum/10-1;
while(s2>0)
{
if((6-(ad+sum/30))>0)
n-=(6-(ad+sum/30));
s2-=ap+sum/10-1;
s2+=2;
}
sum+=2;
}
else if(a[i][j]=='3')
{
int s3=60;
s3-=ap+sum/10-5;
while(s3>0)
{
if((10-(ad+sum/30))>0)
n-=(10-(ad+sum/30));
s3-=ap+sum/10-5;
s3+=5;
}
sum+=5;
}
else if(a[i][j]=='4')
{
int s4=60;
s4-=ap+sum/10-3;
s4++;
while(s4>0)
{
if((20-(ad+sum/30))>0)
n-=(20-(ad+sum/30));
s4-=ap+sum/10-3;
s4+=10;
}
sum+=4;
}
else if(a[i][j]=='5')
{
int s5=300;
s5-=ap+sum/10-2;
while(s5>0)
{
if((23-(ad+sum/30))>0)
n-=(23-(ad+sum/30));
s5-=ap+sum/10-2;
s5+=20;
}
sum+=5;
}
else if(a[i][j]=='6')
{
int s6=400;
s6-=ap+sum/10-20;
while(s6>0)
{
if((25-(ad+sum/30))>0)
n-=(25-(ad+sum/30));
n-=2;
s6-=ap+sum/10-20;
s6+=10;
}
sum+=5;
}
else
{
if(a[x][y]=='A')
ap++;
if(a[x][y]=='H')
n+=15;
}
}
void place(char shu)
{
a[x][y]=' ';
if(shu=='w')
y--;
else if(shu=='a')
x--;
else if(shu=='d')
x++;
else if(shu=='s')
y++;
else if(shu=='q'&&(ad+sum/30)>0)
{
ap+=4;
ad--;
n-=30;
}
else if(shu=='e'&&(ap+sum/10)>0)
{
ad+=1;
ap-=6;
n+=20;
}
if(x<0)
x++;
if(x>29)
x--;
if(y<0)
y++;
if(y>14)
y--;
pan(x,y);
a[x][y]='#';
}
int main(){
printf(" 数字魔塔\n");
scanf("%c",&d);
printf(" 你是#勇者 \n 你需要闯出去\n 出口为E\n 按下回车继续");
srand(time(0));
for(int x1=0;x1<30;x1++)
for(int x2=0;x2<15;x2++)
{
a[x1][x2]=rand()%30;
if(a[x1][x2]==0)
a[x1][x2]='A';
else if(a[x1][x2]==2)
a[x1][x2]='H';
else if(a[x1][x2]<9)
a[x1][x2]='1';
else if(a[x1][x2]<13)
a[x1][x2]='2';
else if(a[x1][x2]<15)
a[x1][x2]='3';
else if(a[x1][x2]<17)
a[x1][x2]='4';
else if(a[x1][x2]<18)
a[x1][x2]='5';
else
{
a[x1][x2]=' ';
}
}
char shu;
a[29][14]='E';a[28][14]='6';a[29][13]='6';a[27][14]='6';a[29][12]='6';a[28][13]='6';a[0][1]=' ';a[1][0]=' ';
while(1)
{
shu=getch();
system("cls");
if(n<=0||n>1000)
{
printf("\n\n\n\n Game Over\n 得分:%d\n\n\n\n\n",sum);
return 0;
}
v=n;
place(shu);
if(x==29&&y==14)
{
printf("\n\n\n\n\ 恭喜过关\n 得分:%d\n\n\n\n\n",sum);
return 0;
}
printf(" 请按下shift键开始\n wasd方向键\n q键和e键攻防转换(每次转换需要消耗30点生命值.)\n1,2,3,4,5,6都是不同等级的怪物\n\n");
printf("# 生命:%d 攻:%d 防:%d 等级:%d\n",n,ap+sum/10,ad+sum/30,sum/10);
for(int i=0;i<15;i++){
for(int j=0;j<30;j++){
printf("%c ",a[j][i]);
}
printf("\n");
}
printf("1:命:5 攻:4 防:0 回:1 A增加一点攻击力\n2:命:30 攻:6 防:1 回:2 H增加15点生命值\n3:命:60 攻:10防:5 回:5 \n4:命:60 攻:20防:3 回:10\n5:命:300攻:23防:2 回:20 \n6:命:400攻:25防:20回:10真:2");
if(v-n>0)
printf("\n损失%d点生命值\n",v-n);
}
}
//就随便写了一个
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
冥厣bqe88
2012-10-02
知道答主
回答量:56
采纳率:0%
帮助的人:27.6万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2019-04-17
展开全部

太大方不下,放个文字游戏吧

反应太快。。

#include<iostream>

#include<cstdlib>

#include<ctime>

#include<cstring>

#include<windows.h>

using namespace std;

int i,H[3],S[3],K[3],p=1,Y,C;

string P[3];

bool game=1;

void a(int i){

for (;i;i--);

}

void help(){

cout<<"杀手:\nHP:100\nSP:5\nkill:3\n";

cout<<"医生:\nHP:75\nSP:7\nkill:2\n";

cout<<"法师:\nHP:144\nSP:3\nkill:1\n";

cin>>i;

}

void killer(){

P[p]+="杀手";

H[p]=100;

S[p]=5;

K[p]=3;

}

void doctor(){

P[p]+="医生";

H[p]=75;

S[p]=7;

K[p]=2;

}

void engineer(){

P[p]+="法师";

H[p]=144;

S[p]=3;

K[p]=1;

}

void e(int j){

if (j==2&&S[Y]>=2) {

int w=rand()%2;

if (Y==1) cout<<"你使用奖励\n";

else cout<<"电脑使用奖励\n";

K[Y]+=w;

cout<<"杀人数+"<<w<<endl;

w=rand()%5-1;

w=int(1.2*(K[Y]+w));

H[C]-=w;

if (H[C]<=0) game=0;

if (Y==1) cout<<"你杀了电脑 ";

else cout<<"你被电脑杀了 ";

cout<<w;

if (Y==1) cout<<endl;

S[Y]-=2;

}

}

void k(int j){

if (j==2&&S[Y]>=2) {

if (Y==1) cout<<"YOU 使用奖励\n";

else cout<<"The computer 使用奖励\n";

int w=rand()%4+1;

H[C]-=int(1.5*K[Y]+w);

if (H[C]<=0) game=0;

if (Y==1) cout<<"杀 ";

else cout<<"你被电脑杀了 ";

cout<<int(1.5*K[Y]+w);

if (Y==1) cout<<endl;

S[Y]-=2;

}

}

void d(int j){

if (j==2&&S[Y]>=2) {

if (Y==1) cout<<"YOU 使用奖励\n";

else cout<<"The computer 使用奖励\n";

int w=rand()%5;

H[Y]+=K[Y]+w;

if (Y==1) cout<<"YOU HP+";

else cout<<"The computer HP+";

cout<<K[Y]+w;

if (Y==1) cout<<endl;

S[Y]-=2;

}

}

void play(){

system("cls");

cout<<"Game start!!!!!!!!!!!!!!!!";

Sleep(3000);

system("cls");

int r=1,j;

// bool game=1;

while (game){

Y=1;

C=2;

cout<<"Round "<<r<<"\n";

Sleep(3000);

cout<<"The 电脑 HP:"<<H[2]<<" SP:"<<S[2]<<" kill:"<<K[2]<<"\t"<<P[2];

cout<<"\n\n\n\nYour HP:"<<H[1]<<" SP:"<<S[1]<<" kill:"<<K[1]<<"\t"<<P[1];

Sleep(3000);

cout<<"\nYou choose:\n1.杀人(1SP)\n2.奖励(2SP)\n3.大杀特杀(5SP)\n4.啥事都没(+1~3SP)\n5.干哈(+0~2kill)\n6.尝试(3SP)";

cin>>j;

if (j==1&&S[Y]>0) {

int w=rand()%5-1;

S[Y]--;

H[C]-=K[Y]+w;

if (H[C]<=0) game=0;

cout<<"You kill the computer"<<K[Y]+w<<endl;

} else {

if (j==4) {

int w=rand()%3+1;

S[Y]+=w;

cout<<"YOU SP+"<<w<<endl;

} else {

if (j==5) {

int w=rand()%3;

K[Y]+=w;

cout<<"YOU kill+"<<w<<endl;

} else {

if (P[Y]=="killer") k(j);

if (P[Y]=="doctor") d(j);

if (P[Y]=="engineer") e(j);

}

}

}

if (game){

j=rand()%6+1;

C=1;

Y=2;

while (j!=1&&j!=2&&j!=4&&j!=5) j=rand()%6+1;

if (j==1&&S[2]>1) {

int w=rand()%5-1;

S[2]--;

H[1]-=K[2]+w;

if (H[1]<=0) game=0;

cout<<"你被电脑杀了"<<K[2]+w;

} else {

if (j==4) {

int w=rand()%3+1;

S[2]+=w;

cout<<"The computer SP+"<<w;

} else {

if (j==5) {

int w=rand()%3;

K[2]+=w;

cout<<"The computer kill+"<<w;

} else {

if (P[Y]=="killer") k(j);

if (P[Y]=="doctor") d(j);

if (P[Y]=="engineer") e(j);

}

}

}

if (game) Sleep(3000);

}

r++;

system("cls");

}

}

int main(){

srand((unsigned)time(NULL));

cout<<"Welcome to my game!!!!!!!!!!!!\n";

Sleep(3000);

system("cls");

cout<<"Please choose:\n1.killer\n2.doctor\n3.engineer\n4.help";

cin>>i;

if (i==4) help();

cout<<"You choose ";

if (i==1) killer();

if (i==2) doctor();

if (i==3) engineer();

cout<<P[p]<<endl;

i=rand()%3+1;

p++;

cout<<"The computer chooses ";

if (i==1) killer();

if (i==2) doctor();

if (i==3) engineer();

cout<<P[p]<<endl;

system("pause");

play();

if (H[1]<=0) cout<<"YOU LOSE~~~~~~~~~~~~~~~~~";

else cout<<"YOU WIN!!!!!!!!!!!!!!!!!!!";

return 0;

}


已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式