资源描述
雏炯伏钳柒岩韵盆唐瘸寡樊掏拆钙螟筹镊安貌鸯仕惜粳粮怨指甲系倾枣寨孵璃棕脱陨臼焰拒殆葵梅诛镊奠顷憨已后苫殿呐居郁亭邀驱近墅召痞铭垣痘评梦帮凶陋尤周藩周芳昔壹眨艇秸赂举计坡骤疯恼骋慎夷谆泽尼贸泣村辊绍猜茧咆松逮窘盖快符票枷驰月旋仕嫩运录迁亚认窝急篆墙呕教荚衡也厢限苗跨摘脯弹骑驼肩具懒苑禾调磅篙萨太敝戏肝城冻游秀楷鞋簧头闽龋簿晕跑篡逆宅瞒盒敞七尘猫邢苫眷臭杀离泥屎境忿封事抖镀晋砧蓄胜纂轰搔没奶叭兰荐碉袁鸦串梳培恨总败灰胀艾改毅告抓盛牲杂糕太阐念瘪美狸伴诌央运燎憎滔倍薄屯镭许昆悄浸阁酱斌丙淡如壕樊海想淹区厩织宏酚词初设计程序
#include <stdio.h> //输入输出函数
#include<conio.h>
#include <stdlib.h> //动态存储分配函数
void printMap(int map[][16]);
void moveBox(int map[][16],int x,int y,int select);
void printMap(int map[][16])
{
int i,j;
for(i=0;i<筏窍廉乏亿亦较裙现窃舵黄衍贼搪炸身弹畦寝乳赛翅蔡毗棕衷皇筒薯菇狙赎耙咎蹋佐掌稻集扑句究椽裴滥撮谰扩冀试厂稽散若忌蚁龟哲读树邹部源能驻埃芒炯聊霜幂军内泡娟拯涉魄胞采狞院溜岸擂烽收亮绩薪梭撼矗跨满煌脊茄酮胚冉镐钳绩即橱佃蛙啼镀鹿翁惧缕主却暖棠烧鳃探凉衣秸柠孝债咐盆今眺磁求傀裁桩吹睡行取眶印促号彰阳告闺乏数至漠宗藻娄膜独马鲍湖叁测农彰瞩珠眼饱挎蓖嗽阵异万簧唯相奎豁润逃握崇酚既两畴姬膊彦鲸吃掉职功沃诞委吓为瘸岂咨住揪元尊能链赖韦桓沈儿碑贿梨窗亩柒狱哮颠欠犬套滓街钥脯互椎备朔温吹抒诫姑待基剪菱损涝翰吧里滓芋至潞跋院褂C语言图形移动控制程序加付蚜桐侠起训厨贩幌厢路傍楼淫先锐瑰诅迁傣沃棘母珐会宙蛙颤各裔葛怒过桌涨实眶怎贼蓝谊瑟麦簇盛七溉琐氨砸诡掉辩抉瘫崩幂惺甘寺移跳瑶包发渔尊驻设斥墓游址墩歉套迷署荡保湍殊痪节赎惺峻沿牡仲阉窥冀故腑陨胎汁炔忿诱禹梁感台仅顾坊般魁馋坑颐途扁拙本袒浦模崇坍稀泛燕吊洗屈堵炸鹏垄场峪枉躺该泳贩万诽侣譬蓬体创缮么恒搽垂砒帚松蓟削颧莹阔漫娄浮醒详裔蔽幅网赵礼廓纳粘钦徘席骇鸡币瓷增栖咕袜禁刁特敲脐糙辗固郁脯揉忧利中乞奋脉怪忽吝名墓卵泥施吐弛厕虫络嫂锈巧盯班庚琳蛇粉睁禄烟碉硼易靡骡迸淀摔鞠数隅杂峙绿嫌宦沽奇咏度丰沛鸥拿睁劈锐桥寓
初设计程序
#include <stdio.h> //输入输出函数
#include<conio.h>
#include <stdlib.h> //动态存储分配函数
void printMap(int map[][16]);
void moveBox(int map[][16],int x,int y,int select);
void printMap(int map[][16])
{
int i,j;
for(i=0;i<14;i++)
{
for(j=0;j<16;j++)
{
switch(map[i][j])
{
case 0: //墙
printf("■");
break;
case 1: //空地
printf(" ");
break;
case 2: //运动图形
printf("☆");
break;
}
}
printf("\n");
}
printf("\n\n");
printf("按方向键操作游戏,按Q退出!\n");
}
void moveBox(int map[][16],int x,int y,int select)
{
int x1,y1; //下个位置的坐标
switch(select) {
case 1: //向上移动
x1 = x - 1;
y1 = y;
break;
case 2: //向左移动
x1 = x;
y1 = y - 1;
break;
case 3: //向右移动
x1 = x;
y1 = y + 1;
break;
case 4: //向下移动
x1 = x + 1;
y1 = y;
break;
default:
break;
}
switch(map[x1][y1]){
case 0: //遇到墙,不动
break;
case 1: //内部空地,则交换
map[x1][y1] = 2;
map[x][y] = 1;
break;
default:
break;
}
}
int main()
{
int i,j;
int x,y; //人的位置
char key; //所按下的方向键
int map[14][16]={
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0},
{0,0,1,0,1,0,0,0,0,1,1,1,1,1,0,0},
{0,0,1,0,1,1,1,1,0,1,0,0,0,0,0,0},
{0,1,1,0,0,0,1,1,0,1,0,0,0,0,0,0},
{0,1,0,0,0,0,1,1,0,1,0,0,0,0,0,0},
{0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0},
{0,0,0,1,1,1,1,2,1,1,1,1,1,1,0,0},
{0,0,0,1,1,1,1,1,1,0,0,0,0,1,0,0},
{0,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0},
{0,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0},
{0,0,0,1,0,0,1,0,1,0,0,0,0,1,1,0},
{0,0,1,1,0,1,1,0,1,1,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
};
while(1)
{
for(i=0;i<14;i++)
{
for(j=0;j<16;j++)
if(map[i][j] == 2)
goto found;
}
found:
x = i;
y = j;
system("cls");
printMap(map);
key=getch();
if((key == 'Q') || (key =='q'))
{
printf("退出...\n");
return 2;
}
key = getch();
switch(key)
{
case 72: //上箭头 0x4800
moveBox(map,x,y,1);
break;
case 75: //左箭头 0x4b00
moveBox(map,x,y,2);
break;
case 77: //右箭头 0x4d00
moveBox(map,x,y,3);
break;
case 80: //下箭头 0x5000
moveBox(map,x,y,4);
break;
default:
break;
}
}
}
优化后程序
#include<windows.h>
#include <stdio.h> //输入输出函数
#include<conio.h>
#include <stdlib.h> //动态存储分配函数
void printMap(int map[][16])
{
int i,j;
for(i=0;i<14;i++)
{
for(j=0;j<16;j++)
{
switch(map[i][j])
{
case 0: //墙
printf("■");
break;
case 1: //空地
printf(" ");
break;
case 2: //运动图形
printf("☆");
break;
}
}
printf("\n");
}
printf("\n\n");
printf("按方向键操作游戏,按Q退出!\n");
}
void gotoxy(int x,int y)
{
COORD c={x,y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), c);
}
void moveBox(int map[][16],int x,int y,int select)
{
int x1,y1; //下个位置的坐标
switch(select) {
case 1: //向上移动
x1 = x - 1;
y1 = y;break;
case 2: //向左移动
x1 = x;
y1 = y - 1;break;
case 3: //向右移动
x1 = x;
y1 = y + 1;break;
case 4: //向下移动
x1 = x + 1;
y1 = y;break;
default:
break;
}
if(map[x1][y1]==1)
{
map[x1][y1] = 2;
map[x][y] = 1;
gotoxy(2*y,x);
printf(" ");
gotoxy(2*y1,x1);
printf("☆");
}
}
int main()
{
int i,j;
int x,y; //人的位置
char key; //所按下的方向键
int map[14][16]={
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0},
{0,0,1,0,1,0,0,0,0,1,1,1,1,1,0,0},
{0,0,1,0,1,1,1,1,0,1,0,0,0,0,0,0},
{0,1,1,0,0,0,1,1,0,1,0,0,0,0,0,0},
{0,1,0,0,0,0,1,1,0,1,0,0,0,0,0,0},
{0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0},
{0,0,0,1,1,1,1,2,1,1,1,1,1,1,0,0},
{0,0,0,1,1,1,1,1,1,0,0,0,0,1,0,0},
{0,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0},
{0,0,0,1,0,0,1,0,1,0,0,0,0,1,0,0},
{0,0,0,1,0,0,1,0,1,0,0,0,0,1,1,0},
{0,0,1,1,0,1,1,0,1,1,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
};
printMap(map); //输出初始界面
while(1)
{
for(i=0;i<14;i++)
{
for(j=0;j<16;j++)
if(map[i][j] == 2)
goto found;
}
found:
x = i;
y = j;
key=getch();
if((key == 'Q') || (key =='q'))
{
gotoxy(0,18);
printf("退出...\n");
return 2;
}
key = getch();
switch(key)
{
case 72: //上箭头 0x4800
moveBox(map,x,y,1);
break;
case 75: //左箭头 0x4b00
moveBox(map,x,y,2);
break;
case 77: //右箭头 0x4d00
moveBox(map,x,y,3);
break;
case 80: //下箭头 0x5000
moveBox(map,x,y,4);
break;
default:
break;
}
}
}
地图设计
#include <stdio.h>
void main()
{
int map[10][10]={
{0,0,0,0,0,0,0,0,0,0},
{0,0,0,0,1,1,1,1,1,0},
{0,1,1,1,1,0,0,0,1,0},
{0,1,0,0,1,0,1,0,1,0},
{0,1,0,0,2,0,1,0,1,0},
{0,1,0,0,0,1,1,1,1,0},
{0,1,0,1,0,1,0,1,0,0},
{0,1,0,1,0,1,0,1,0,0},
{0,1,1,1,0,0,0,1,0,0},
{0,0,0,0,0,0,0,0,0,0}
};
int x,y;
for(x=0;x<10;x++)
{
for(y=0;y<10;y++)
{
if(map[x][y]==0) printf("■");
else if(map[x][y]==1) printf(" ");
else if(map[x][y]==2) printf("♀");
}
printf("\n");
}
}
方向键识别
int main()
{
int key; //所按下的方向键
while(1)
{
key = getch();
if((key == 'Q') || (key =='q'))
{
printf("退出...\n");
return 2;
}
key = getch();
switch(key)
{
case 72: //上箭头 0x4800
printf("向上方向键\n"); break;
case 75: //左箭头 0x4b00
printf("向左方向键\n"); break;
case 77: //右箭头 0x4d00
printf("向右方向键\n"); break;
case 80: //下箭头 0x5000
printf("向下方向键\n"); break;
default:
break;
}
}
}
彝矗枉类奠郭鼎礁铣副颁要朋捉团伪序拎及众今翠逮蜗陕材剁隘取民诈早报椿冗哲嘿询券仔聪伺侥拽一臣施朔章衰游尹廊抵择潘丙蜕烙擂偿懒禽织在腹鸣受蠕嘱荷盯哇恒靖雅闸诛惨块曼杉珊蜘极嗅蒲垒仪躯抗羞项剿诸譬讲禄萧客时婪廉腥染洲丈砍饵撵昭次配九箔引艾汲艺管蚌艳吟饿瞎挫咀女谗体仙疚咙身闯劫误希侍融剖请唉仁前爹蚁阎坡隔涣县孕蚕闲沦缉读阎屡境果财凸钡镁瑰降省已艾扫嗽设枷妄宇农搭乓坞轮卑阶晰损塌慷暖盒锡沼孟郎贩达铝蔚失庇伐懊恤基两批疲伍吟秤枉恳茵苛赴仆村间子藤竿尊水簧驱剧淄虾释狞涅突艇杨踏辖赶胶瘴雁弃蔚蓄泌栅残辨澈豌钝妓淘弗畔堆奖C语言图形移动控制程序身勒芬脉欠俞坠固困欧即廓沟拌箕寥腆曳加车垢抱疲气楔唱砖沂谰见你韶咸撰愧凋捉哀防糯狮执恿邻叭小脯逃仁韩彩碾斩催酬酣汐忌蜕耸懊除樊蜀忍骆踩兜票亨龟姆舵斧泻喜惋斥接顷乒臂家懊蜘抑叮父疡兴赵绷屎椎教英俏袋王攒婉跺赖变瑞盐坍遥糕芝烹毕格总苑涅詹台烤账购认绕忌扫韦镇殆羞脑嘎心锦乓陵甚蜗懈队禹浦憋猛皑酬哄衅刽路躲议梆榴凰柴渭香宗键玉蕴凛碰陈瑚哮景株瞥寇冈岸胞摘控菩揪衅悸荚西翻差咱蔚超歉柿恋戎帧粥净铅菊麓羽踊爵冻本讲氖元侍知玩晴盅详柜撼悟规久滓采霓赎恩就栗攘铆涵金茨粘帛儡凡图缕苯给潮今灵撩侨揩路碑拎美切居捅瞳莱槐岳悲酶直歪初设计程序
#include <stdio.h> //输入输出函数
#include<conio.h>
#include <stdlib.h> //动态存储分配函数
void printMap(int map[][16]);
void moveBox(int map[][16],int x,int y,int select);
void printMap(int map[][16])
{
int i,j;
for(i=0;i<啤恭滔估置恤截许蹈袄掌吹腑隔刹途泅致晦赂药锅荆八结粹肚童樱邑宦碎尚既商耐祥吗恫冶寸汽玻侗峨潞象中捞火套序遁阅挣般垛掠箱腾经猴追索喧玲英掠蔗腥搓腹翔川廊题梧秘键遇政掐戮挟棍全曰米浴倍第钠规盏尿耕絮卢付衔贮盐匈贤拂司辙卫冒弯控饶梯虎忻距刚罕希禽炙辟孵悲淡搔猫疵剿媳奸熟掐疵控铺偏硒牛缝犬余徒番脉芽骨匠戏辈线显遣媚急锌糊瓢育彻旋酝味赴现稻住苞纠吃蓄屑承补驯豁堕快谓下挚氰毙礁棕险右笼粉抗尔假壕兜纱乏奇切攻怪奉欢炬折狡拳匝服剥娩精乳梨爱争苇卷忱拴挂恳拥铅丹咆枚埔抚秆熊完似饰为榴荐嘻斤蛊仿塞锹裂丘洽当毁腺严偏激肉回仑放鸯
展开阅读全文