搜索
查看: 4383|回复: 21
打印 上一主题 下一主题

一个很好玩的RPG游戏,基于C语言

[复制链接]
跳转到指定楼层
楼主
发表于 2014-3-23 00:06:33 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 李掌柜 于 2014-3-23 00:08 编辑

一个基于C语言写的RPG小游戏~~!

111.png (24.94 KB, 下载次数: 23)

111.png

222.png (25.06 KB, 下载次数: 12)

222.png

333.png (14.25 KB, 下载次数: 18)

333.png

RPG.c

5.54 KB, 下载次数: 57

售价: 2 啊哈币  [记录]

源代码

RPG.rar

129.01 KB, 下载次数: 146

沙发
发表于 2014-3-23 08:44:05 | 只看该作者
.................
板凳
发表于 2014-3-23 08:46:30 | 只看该作者
就一个任务??

点评

这个小游戏的源代码是教我们如何用C语言写简单的RPG游戏!!  发表于 2014-3-23 12:41
额 ,你可以在源代码上在加几个任务啊!~~  发表于 2014-3-23 12:26
地板
发表于 2014-3-23 11:10:04 | 只看该作者

怎么打开                  
5#
发表于 2014-3-23 12:44:34 | 只看该作者
要两个啊哈币我才不下呢
6#
 楼主| 发表于 2014-3-23 12:48:06 | 只看该作者
cad20020601 发表于 2014-3-23 12:44
要两个啊哈币我才不下呢

源代码来于网络,掌柜的在原来的代码上修改了下,你去网上找罗,不要啊哈币呢!!~~
7#
发表于 2014-3-23 20:28:44 | 只看该作者
李掌柜 发表于 2014-3-23 12:48
源代码来于网络,掌柜的在原来的代码上修改了下,你去网上找罗,不要啊哈币呢!!~~

借用一下吉日嘎拉的话:
我们没那个精力去折腾
8#
 楼主| 发表于 2014-3-23 20:33:58 | 只看该作者
cad20020601 发表于 2014-3-23 20:28
借用一下吉日嘎拉的话:

借用某位大人物的话:

天下没有免费的午餐~~
9#
发表于 2014-3-24 12:07:23 | 只看该作者
李掌柜 发表于 2014-3-23 20:33
借用某位大人物的话:

天下没有免费的午餐~~

借用一下阿衰的话:
可是会有免费的早餐和晚餐
10#
发表于 2014-3-25 18:12:11 | 只看该作者
4399APPLE 发表于 2014-3-24 12:07
借用一下阿衰的话:

=、=接的很接地气,八错八错。
11#
发表于 2014-3-25 18:13:27 | 只看该作者
本帖最后由 cad20020601 于 2014-3-25 18:15 编辑
  1. #include <stdio.h>
  2. /*  为了支持颜色 */
  3. #include <windows.h>

  4. // 地图区域
  5. const int MAP_X_LENGTH = 24;
  6. const int MAP_Y_LENGTH = 18;

  7. /* 声明函数 */
  8. void game();
  9. int deriction_down();
  10. int deriction_up();
  11. int deriction_left();
  12. int deriction_right();
  13. void role_up();
  14. void role_display();
  15. void gameinfo();
  16. int NPC(int npc);






  17. // 屏幕缓冲区
  18. int display[18][24] = {
  19.                 {3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3},
  20.                 {3,1,2,0,0,0,0,0,2,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0},               
  21.                 {3,0,2,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},               
  22.                 {3,0,2,2,2,0,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},               
  23.                 {3,0,0,0,2,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},               
  24.                 {3,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},               
  25.                 {3,0,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},               
  26.                 {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},               
  27.                 {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},               
  28.                 {3,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0},               
  29.                 {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},               
  30.                 {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3},               
  31.                 {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3},               
  32.                 {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3},               
  33.                 {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3},               
  34.                 {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3},               
  35.                 {3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3},               
  36.                 {3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3}

  37. };

  38. // 描述位置结构体
  39. struct Position{
  40.         int x;// x
  41.         int y;// y
  42. };

  43. // 角色
  44. struct Role{
  45.         struct Position oldP;// 旧位置
  46.         struct Position newP;// 新位置
  47.         void (* display)();         
  48. };

  49. struct Role role = {
  50.     {1, 1},
  51.     {1, 1}
  52. };

  53. int main(){
  54.         role.display = &role_display;
  55.         
  56.         while(1){
  57.                  game();
  58.         }
  59.         return 0;
  60. }

  61. void gameinfo(){
  62.    SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_INTENSITY |
  63.             FOREGROUND_RED | FOREGROUND_GREEN );
  64.      
  65.         printf("=======================\n");
  66.     printf("=====欢迎来玩游戏======\n");
  67.         printf("=======================\n");
  68.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY |
  69.             FOREGROUND_RED | FOREGROUND_BLUE);
  70. }


  71. void game(){
  72.         role.display();
  73.     gameinfo();
  74.         // 遍历map中的数据
  75.         int i,j;
  76.     for( i=0; i< MAP_Y_LENGTH ; i++){
  77.                 for( j=0; j< MAP_X_LENGTH ; j++){
  78.                     int temp = display<I>[j];
  79.                     
  80.                     if(temp == 1){
  81.                                    printf("¤");
  82.                     }else if(temp == 2){
  83.                                 printf("∏");
  84.                    }else if(temp == 3){
  85.                        printf("■");
  86.                    }else if(temp == 4){
  87.                                 printf("N ");                  
  88.                         }else if(temp == 5){// 猪
  89.                         printf("Z ");
  90.                         }else{
  91.                         printf("  ");
  92.                     }
  93.                 }
  94.                 printf("\n");
  95.         }
  96.         
  97.         char a = getch();
  98.          
  99.         // 记录旧位置
  100.         role.oldP.y = role.newP.y;
  101.         role.oldP.x = role.newP.x;
  102.         switch(a){
  103.                 case 's': // 向下
  104.                         if(NPC(deriction_down()) == 0){
  105.                                 role.newP.y = role.newP.y + 1;// 向下走         
  106.                         }
  107.                 break;
  108.                 case 'd': // 向右
  109.                         if(NPC(deriction_right()) == 0){
  110.                                 role.newP.x = role.newP.x + 1;
  111.                         }
  112.                 break;
  113.                 case 'a': // 向左
  114.                         if(NPC(deriction_left()) == 0){
  115.                                 role.newP.x = role.newP.x - 1;
  116.                         }
  117.                 break;
  118.             case 'w': // 向上
  119.                     if(NPC(deriction_up()) == 0){
  120.                                 role.newP.y = role.newP.y - 1;
  121.                     }
  122.                 break;
  123.         default: ;
  124.         }
  125.          system("cls");
  126. }

  127. char npc_info[4][80] = {
  128.         "我:你就是传说中的NPC?\n",
  129.         "NPC:你这是看不起NPC嘛!!!\n",
  130.         "我:不不不,我是来接任务的!\n",
  131.         "NPC:我有一头猪不见了,你帮我找回来吧!\n",
  132. };


  133. int NPC(int npc){
  134.         printf("%d",npc);
  135.         if(npc == 4){//遇到NPC
  136.                 system("cls");
  137.                 gameinfo();
  138.                 int i = 0,j=0;
  139.                 for(j=0;j < 4; j++){
  140.                         for(i=0; i < sizeof(npc_info[j]); i++){
  141.                                 printf("%c",npc_info[j]<I>);
  142.                                 _sleep(10);
  143.                         }
  144.                         printf("\n");
  145.                 }
  146.                 printf("是否接收任务?\n");
  147.                 printf("1. 是    2. 否\n");
  148.                 char key = getchar();
  149.                 if(key == '1'){
  150.                         display[10][9] = 5;
  151.                         return 0;
  152.                 } else{
  153.                         return 4;
  154.                 }  
  155.                  
  156.                 return 4;
  157.         }else if(npc == 5){//找到了猪
  158.                 system("cls");
  159.                 gameinfo();
  160.                 printf("恭喜你,任务完成!\n");
  161.                 system("pause");
  162.                 return 0;
  163.         }
  164.         return npc;
  165. }



  166. /* 向下 */
  167. int deriction_down(){
  168.         return display[role.newP.y + 1][role.newP.x];
  169. }
  170. /* 向上 */
  171. int deriction_up(){
  172.         return display[role.newP.y - 1][role.newP.x];
  173. }
  174. /* 向左 */
  175. int deriction_left(){
  176.         return display[role.newP.y][role.newP.x - 1];         
  177. }
  178. /* 向右 */
  179. int deriction_right(){
  180.         return display[role.newP.y][role.newP.x + 1];
  181. }

  182. /*
  183. * 角色向上走
  184. */
  185. void role_display(){
  186.     display[role.oldP.y][role.oldP.x] = 0;
  187.         display[role.newP.y][role.newP.x] = 1;
  188. }
  189. </I></I>
复制代码

哼哼,我翻出来了。

点评

需要那么麻烦吗?  发表于 2014-5-15 19:59
12#
发表于 2014-3-25 18:36:58 | 只看该作者
cad20020601 发表于 2014-3-25 18:12
=、=接的很接地气,八错八错。

                              
13#
 楼主| 发表于 2014-3-25 19:46:15 | 只看该作者

哈哈, 有耐心呀,这得要挖多久才挖出来呀
14#
发表于 2014-3-27 17:51:34 | 只看该作者
李掌柜 发表于 2014-3-25 19:46
哈哈, 有耐心呀,这得要挖多久才挖出来呀

挖什么?   
15#
发表于 2014-4-11 10:32:25 | 只看该作者

挖坟。。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表