纯C语言写的一个小型游戏源代码.doc_第1页
纯C语言写的一个小型游戏源代码.doc_第2页
纯C语言写的一个小型游戏源代码.doc_第3页
纯C语言写的一个小型游戏源代码.doc_第4页
纯C语言写的一个小型游戏源代码.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/* A simple game*/*CopyRight: Guanlin*/#include#include#include#include#include#includestruct object_fixchar name20;char id5;char desc500;char action30;char im5;struct object_movechar name20;char id5;char desc500;int loc;int pwr;int strg;char im5;struct roverchar name20;char id5;char desc500; int pwr;int strg;int location2;char im5;struct map /* this is the map structure*/char data20;char add_data20;int amount;int x; /* this were the successor keeps its x & y values*/int y;struct location /*this structure is for the successor lister*/float height;char obj;void stats_update(int selected, struct rover *p_rover)switch (selected)case 1:if(p_rover-pwr pwr) -= 7;printf(You have destroyed the object!nn);break;case 2:if(p_rover-pwr strg 90)printf(nnYou do not have enough storage space for this object!nn);else(p_rover-pwr) -= 3;(p_rover-strg) += 10;printf(You have collected a sample of the object!nn);break;case 3:p_rover-pwr -= 10; /*Distance around object- value gained from mapper module. 1 square = -1 power*/printf(You have avoided the object!nn);break;case 4:p_rover-pwr -= 2; printf(You have driven through the obstacle!nn);break;case 5:if(p_rover-pwr = 100)printf(nnYou do not need to charge up!nn);elsep_rover-pwr = 100;printf(You have charged up your rover!nn);break;default:printf(nn*ERROR*nInvalid Selectionnn);break;void action(char object, struct rover *p_rover)int selection;switch(object)case 1:printf(nYou have encountered: A Sandy Rocknn);printf(This object can be:n1.tDestroyedn2.tCollectednPlease choose action 1 or 2:t);scanf(%d, &selection);stats_update(selection, p_rover);break;case 2:printf(nYou have encountered: A Solid Rocknn);printf(This object can be:n1.tAvoidedn2.tCollectednPlease choose action 1 or 2:t);scanf(%d, &selection);if (selection = 1)selection = 3;stats_update(selection, p_rover);break;case 3:printf(nYou have encountered: A Mountainnn);printf(This object can be:n1.tAvoidednPlease enter 1:t);scanf(%d, &selection);selection = 3;stats_update(selection, p_rover);break;case 4:printf(nYou have encountered: Dustnn);printf(This object can be:n1.tDriven throughn2.tCollectednPlease choose action 1 or 2:t);scanf(%d, &selection);if (selection = 1)selection = 4;stats_update(selection, p_rover);break;case 5:printf(nYou have encountered: A Sheer Valleynn);printf(This object can be:n1.tAvoidednPlease enter 1:t);scanf(%d, &selection);selection = 3;stats_update(selection, p_rover);break;case 6:printf(nYou have encountered: A Gentle Valleynn);printf(This object can be:n1.tDriven throughn2.tAvoidednPlease choose action 1 or 2:t);scanf(%d, &selection);if (selection = 1)selection = 4;if (selection = 2)selection = 3;stats_update(selection, p_rover);break;case 7:printf(nYou have encountered: A Martian Treenn);printf(This object can be:n1.tDestroyedn2.tCollectedn3.tAvoidednPlease choose action 1, 2 or 3:t);scanf(%d, &selection);stats_update(selection, p_rover);break;case 8:printf(nYou have encountered: Shallow Waternn);printf(This object can be:n1.tDriven throughn2.tCollectedn3.tAvoidednPlease choose action 1, 2 or 3:t);scanf(%d, &selection);if (selection = 1)selection = 4;stats_update(selection, p_rover);break;case 9:printf(nYou have encountered: Deep Waternn);printf(This object can be:n1.tAvoidedn2.tCollectednPlease choose action 1 or 2:t);scanf(%d, &selection);if (selection = 1)selection = 3;stats_update(selection, p_rover);break;case 10:printf(nYou have encountered: An Aggressive Aliennn);printf(This object can be:n1.tDestroyednPlease enter 1:t);scanf(%d, &selection);selection = 1;stats_update(selection, p_rover);break;case 11:printf(nYou have encountered: A Non-Aggressive Aliennn);printf(This object can be:n1.tAvoidednPlease enter 1:t);scanf(%d, &selection);selection = 3;stats_update(selection, p_rover);break;case 12:printf(nYou have encountered: Another Rovernn);printf(This object can be:n1.tAvoidednPlease enter 1:t);scanf(%d, &selection);selection = 3;stats_update(selection, p_rover);break;case 13:printf(nYou have encountered: A Power Stationnn);printf(You can:n1.tCharge upn2.tAvoidnPlease choose action 1 or 2:t);scanf(%d, &selection);if (selection = 1)selection = 5;if (selection = 2)selection = 3;stats_update(selection, p_rover);break;default:printf(nn*ERROR*nn);break;void show_map(struct map *number, struct map *number_2, struct object_fix *rsny, struct object_fix *rsld, struct object_fix *mnt, struct object_fix *dst, struct object_fix *vshr, struct object_fix *vgnt, struct object_fix *mtre, struct object_fix *wshl, struct object_fix *wdp, struct object_move *aagr, struct object_move *anon, struct object_move *rvr, struct object_move *pstn, struct rover *p_rover) /*the show map function calling number and number_2 from the map structure to see if moveable objects are needed*/struct map f_map88; /*8 by 8 map*/int i,j, rx, ry, object; /*this is your x and y value in your map (f_map)*/system(cls); /* this is your x and y value in your map (f_map)*/srand(time(NULL); /*calling the time from include to gather random variables*/for(i=0;i8;i+) /*for loop to copy all your fixed object lists into f_map so they can be displayed*/for(j=0;jamount0) /*this is looking at the add function to see weather or not there are aliens in f_map*/for(i=0;iamount;i+) /*allocating the number of aliens in f_map*/strcpy(f_maprand()%8rand()%8.data, anon-im); /*randomizing their position*/if(number_2-amount0) /*repeat of above just for rovers instead*/for(i=0;iamount;i+)strcpy(f_maprand()%8rand()%8.data, rvr-im);rx= p_rover-location0;ry= p_rover-location1;strcpy(f_map10.data, wdp-im);strcpy(f_map40.data, mnt-im);strcpy(f_map50.data, mnt-im);strcpy(f_map31.data, dst-im);strcpy(f_map41.data, dst-im);strcpy(f_map32.data, dst-im);strcpy(f_map42.data, dst-im);strcpy(f_map03.data, mnt-im);strcpy(f_map13.data, mnt-im);strcpy(f_map33.data, vshr-im);strcpy(f_map43.data, dst-im);strcpy(f_map53.data, vgnt-im);strcpy(f_map34.data, vshr-im);strcpy(f_map44.data, dst-im);strcpy(f_map54.data, vgnt-im);strcpy(f_map25.data, wshl-im);strcpy(f_map35.data, wshl-im);strcpy(f_map45.data, wshl-im);strcpy(f_map16.data, pstn-im);strcpy(f_map26.data, wdp-im);strcpy(f_map36.data, wdp-im);strcpy(f_map46.data, wshl-im);strcpy(f_map76.data, mnt-im);strcpy(f_map07.data, mnt-im);strcpy(f_map17.data, wdp-im);strcpy(f_map27.data, wshl-im);strcpy(f_map37.data, wshl-im);strcpy(f_map67.data, mnt-im);strcpy(f_maprxry.data, p_rover-im);if(rx = 1 & ry = 0) | (rx = 2 & ry = 6) |(rx = 3 & ry = 6) |(rx = 1 & ry = 7)object = 9;action(object, p_rover);else if(rx = 4 & ry = 0) | (rx = 5 & ry = 0) | (rx = 0 & ry = 3) | (rx = 1 & ry = 3) | (rx = 7 & ry = 6) | (rx = 0 & ry = 7) | (rx = 6 & ry = 7)object = 3;action(object, p_rover);else if(rx = 3 & ry= 1) | (rx = 4 & ry = 1) | (rx = 3 & ry= 2) | (rx = 4 & ry = 2) | (rx = 4 & ry = 3) | (rx = 4 & ry = 4)object = 4;action(object, p_rover);else if(rx = 3 & ry = 3) | (rx = 3 & ry = 4)object = 5;action(object, p_rover);else if(rx = 5 & ry = 3) | (rx = 5 & ry = 4)object = 6;action(object, p_rover);else if(rx = 2 & ry = 5) | (rx = 3 & ry = 5 ) | (rx = 4 & ry = 5) | (rx = 4 & ry = 6) |(rx = 2 & ry = 7) | (rx = 3 & ry = 7)object = 8;action(object, p_rover);else if(rx = 1 & ry = 6)object = 13;action(object, p_rover);i=0; /*re-allocate i to 0 so map is printed from start*/for(i=0;i8;i+) /*8 by 8 map*/ printf(+-+-+-+-+-+-+-+-+n);for(j=0;jamount=t; /*saving the number in structure map-amount*/printf(how many rovers would you like?n);scanf(%d,&f); /*user input of amount of rovers*/number_2-amount=f; /*saving the number in structure map-amount*/show_map(number, number_2, rsny, rsld, mnt, dst, vshr, vgnt, mtre, wshl, wdp, aagr, anon, rvr, pstn, p_rover); /*go to show map function with the number of aliens and number of rovers*/ void successor() /*this functions askes the user for the location and then were they want to go from there, printing out that location*/struct map location;int menu;int ncol,nrow; /*we can change the n value depends how large the map you need.*/ncol=8;nrow=8;printf(This is the successor functionn);printf(Enter the nx=ty=n);scanf(%d%d,&location.x,&location.y); /*saving location in map location x and y*/printf(Enter operator choicen);printf(1=leftn);printf(2=rightn);printf(3=upwardsn);printf(4=downn);printf(5=quitn);scanf(%d,&menu);switch(menu) /*menu switch to show the position above, underneith, and next to the rover*/case 1:location.x=location.x-1; printf(The position is %d,%dn,location.x,location.y);break;case 2:location.x=location.x+1; printf(The position is %d,%dn,location.x,location.y);break;case 3:location.y=location.y-1; printf(The position is %d,%dn,location.x,location.y);break;case 4:location.y=location.y+1; printf(The position is %d,%dn,location.x,location.y);break;case 5:printf(*back to program*n); /* Quits the program and prints out the message */break; default:printf(*Please enter an integer from 1-5*n); /* A default option if the user enters an incorrect value */break;printf(n);void help(struct map *number, struct map *number_2, struct object_fix *rsny, struct object_fix *rsld, struct object_fix *mnt, struct object_fix *dst, struct object_fix *vshr, struct object_fix *vgnt, struct object_fix *mtre, struct object_fix *wshl, struct object_fix *wdp, struct object_move *aagr, struct object_move *anon, struct object_move *rvr, struct object_move *pstn, struct rover *p_rover) /*help function*/int i;char mov_obj;printf(+This is the help function+n);printf(| 1-successor |n);printf(| 2-add movable obj |n);printf(| 3-remove moveabla obj |nn);printf(t* * *n);printf(t Index: nn);printf(t Sandy Rock: *n);printf(t Solid Rock: on);printf(t Water:262262262262 n);printf(t Shallow water: 260260260260n);printf(t Mountain: n);printf(t Dust: .n);printf(t* sher valley: VVVV *n);printf(t shallow valey: vvvvn);printf(t power station: 025n);printf(t alien: *_*n);printf(t other rovers: #n);printf(t* * *n);scanf(%d,&i);switch(i) /*switch menu to go to the successor function, or the add/remove function*/case 1:successor();break;case 2:add_obj(number, number_2, rsny, rsld, mnt, dst, vshr, vgnt, mtre, wshl, wdp, aagr, anon, rvr, pstn, p_rover);break;case 3:add_obj(number, number_2, rsny, rsld, mnt, dst, vshr, vgnt, mtre, wshl, wdp, aagr, anon, rvr, pstn, p_rover);break;default:printf(choose a number from the listn); void direction(int input, struct map *number, struct map *number_2, struct object_fix *rsny, struct object_fix *rsld, struct object_fix *mnt, struct object_fix *dst, struct object_fix *vshr, struct object_fix *vgnt, struct object_fix *mtre, struct object_fix *wshl, struct object_fix *wdp, struct object_move *aagr, struct object_move *anon, struct object_move *rvr, struct object_move *pstn, struct rover *p_rover)switch(input)case 119: /*w = up*/if(p_rover-location0 0)p_rover-location0-;p_rover-pwr-;else p_rover-location0=7;break;case 115: /*s = down*/if(p_rover-location0 location0+;p_rover-pwr-;else p_rover-location0=0;break;case 97: /*a = left*/if(p_rover-location1 0)p_rover-location1-;p_rover-pwr-;else p_rover-location1=7;break;case 100: /*d = right*/if(p_rover-location1 location1+;p_rover-pwr-;else p_rover-location1=0;break;default:printf(Invalid operator!nn);break;int control(int input)input = _getch();return input;void main(void)int menu;int quit = 0;int input = 0;struct object_fix rsny, rsld, mnt, dst, vshr, vgnt, mtre, wshl, wdp;struct object_move aagr, anon, rvr, pstn;struct rover p_rover;struct map number, number_2;number.amount = 0; /* setting the initial amount of aliens as 0*/number_2.amount = 0; strcpy(,Sandy Rock);strcpy(rsny.id,RSNY);strcpy(rsny.desc,A rock made of softer material that can be destroyed or collected);strcpy(rsny.im,*);strcpy(,Solid Rock);strcpy(rsld.id,RSLD);strcpy(rsld.desc,A rock made of hard material that cannot be destroyed, but can be collected or avoided);strcpy(rsld.im,O);strcpy(,Mountain);strcpy(mnt.id,MNT);strcpy(mnt.desc,A large obstacle made of different materials that can only be avoided);strcpy(mnt.im,);strcpy(,Dust);strcpy(dst.id,DST);strcpy(dst.desc,Small particles of sand, rock, etc. that may reduce visibility or slow down the vehicle, can be driven through but has extra power consumption);strcpy(dst.im,.);strcpy(,Sheer Valley);strcpy(vshr.id,VSHR);strcpy(vshr.desc,A depression in the land with sheer sides, it cannot be driven through and must be avoided);strcpy(vshr.im,VVVV);strcpy(,Gentle Valley);strcpy(vgnt.id,VGNT);strcpy(vgnt.desc,A depression in the land with gentle sides, it can be driven through with extra power consumption or can be avoided);strcpy(vgnt.im,vvvv);strcpy(,Martian Tree);strcpy(mtre.id,MTRE);strcpy(mtre.desc,A woody plant native to Mars, it may have the same characteristics as an Earth tree);strcpy(mtre.im,330);strcpy(,Shallow Water);strcpy(wshl.id,WSHL);strcpy(wshl.desc,A shallow body of water that can be driven through, can be in the form of a small puddle or a large lake);strcpy(wshl.im,260260260260);strcpy(,Deeper Water);strcpy(wdp.id,WDP);strcpy(wdp.desc,A deeper body of water that cannot be driven through, commonly in the form of a large lake or river);strcpy(wdp.im,262262262262);strcpy(,Aggressive Alien);strcpy(aagr.id,AAGR);strcpy(aagr.desc,An alien creature that will move upon its own accord, may become aggressive on contact);strcpy(aagr.im,*_*);strcpy(,Non-Aggressive Alien);strcpy(anon.id,ANON);strcpy(anon.desc,An alien creature that will move upon its own accord, will not become aggressive on contact);strcpy(anon.im,*_*);strcpy(,Rover);strcpy(rvr.id,RVR);strcpy(rvr.desc,A Mars Rover vehicle to transport around the map, it can destroy, collect or avoid objects. It has a power and object storage);strcpy(rvr.im,#);strcpy(,Power Station);strcpy(pstn.id,PSTN);strcpy(pstn.desc,A movable power station that will restore power to the Mars Rovers);strcpy(pstn.im,025);strcpy(p_,User Mars Rover);strcpy(p_rover.id,URVR);strcpy(p_rover.desc,A Mars vehicle that is controlled by the user. Explores the map collecting, destroying and avoiding objects);strcpy(p_rover.im,);p_rover.pwr = 100;p_rover.strg = 0;p_rover.location0 = 7;p_rover.locati

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论