当前访客身份:游客 [ 登录 | 加入开源中国 ]

代码分享

当前位置:
代码分享 » C/C++  » 游戏开发
梦想游戏人

控制台的坦克大战

梦想游戏人 发布于 2014年03月05日 22时, 31评/8294阅
分享到: 
收藏 +0
2
大一刚刚学完C,写了坦克大战,游戏逻辑不是很清晰,代码很乱
标签: <无>

代码片段(5) [全屏查看所有代码]

1. [图片] QQ截图20140305224421.jpg    

2. [图片] QQ截图20140305224427.jpg    

3. [图片] QQ截图20140305224435.jpg    

4. [文件] 坦克大战-单线程.c ~ 42KB     下载(1344)     [全屏预览]

5. [代码][C/C++]代码     跳至 [5] [全屏预览]



void game_control()
{	int ii;
	char a;
	while(1)
	{	
 		if(kbhit())
		 {		
			 a = getch();
			((int)a)==-32? a=getch():a;
			switch(a)
			{
				case 'W':
				case  72:
				case 'w':
				{
				if(tank.direction==8)
				{
					if(map.xy[tank.xy[0][0]][tank.xy[0][1]-1][0]!=1 &&
						(map.xy[tank.xy[1][0]][tank.xy[1][1]-2][0]!=1)&&
						(map.xy[tank.xy[3][0]][tank.xy[3][1]-2][0]!=1))  
					{
						direction=8;
						tank.a=1;
					}
				}
				else 
				{
						direction=8;
						tank.a=1;
				}
				};break;
				
				
				case  80:	
				case 'S':
				case 's':
				{
					
					if(tank.direction==2)
				{
					if(map.xy[tank.xy[0][0]][tank.xy[0][1]+1][0]!=1 &&	
					(map.xy[tank.xy[1][0]][tank.xy[1][1]+2][0]!=1)&&
					(map.xy[tank.xy[3][0]][tank.xy[3][1]+2][0]!=1))  
					{
						direction=2;
						tank.a=1;
					}
				}
				else 
				{
						direction=2;
						tank.a=1;
				}	
					
					
					
				
				};break;
				
				
				
				case 75:
				case 'a':
				case 'A':
				{
					
					if(tank.direction==4)
				{
					if(map.xy[tank.xy[0][0]-2][tank.xy[0][1]][0]!=1 &&	
					(map.xy[tank.xy[1][0]-4][tank.xy[1][1]][0]!=1)&&
					(map.xy[tank.xy[3][0]-4][tank.xy[3][1]][0]!=1))  
					{
						direction=4;
						tank.a=1;
					}
				}
				else 
				{
						direction=4;
						tank.a=1;
				}
					
					
					
					
				};break;
				
				
				
				case 77:
				case 'd':
				case 'D':
				{
					
					if(tank.direction==6)
				{
					if(map.xy[tank.xy[0][0]+2][tank.xy[0][1]][0]!=1 &&
						(map.xy[tank.xy[1][0]+4][tank.xy[1][1]][0]!=1)&&
						(map.xy[tank.xy[3][0]+4][tank.xy[3][1]][0]!=1))  
					{
						direction=6;
						tank.a=1;
					}
				}
				else 
				{
						direction=6;
						tank.a=1;
				}
					
					
					
					
				};break;
				
				
				
				
				case 32:
				{
					for(ii=0;ii<10;ii++)
					{
						if(boo.xy[ii][3]!=1)
						{
							if((tank.xy[0][0]>2&&tank.xy[0][0]<60)&&(tank.xy[0][1]>1)&&(tank.xy[0][1]<21))
							{
								if(tank.direction==8)
								{
									boo.xy[ii][0]=tank.xy[0][0];
									boo.xy[ii][1]=tank.xy[0][1]-1;
									boo.xy[ii][2]=tank.direction;
									boo.xy[ii][3]=1;
									break;
								}
								
								else if(tank.direction==6)
								{
									boo.xy[ii][0]=tank.xy[0][0]+2;
									boo.xy[ii][1]=tank.xy[0][1];
									boo.xy[ii][2]=tank.direction;
									boo.xy[ii][3]=1;
									break;
								}
								
								else if(tank.direction==2)
								{
									boo.xy[ii][0]=tank.xy[0][0];
									boo.xy[ii][1]=tank.xy[0][1]+1;
									boo.xy[ii][2]=tank.direction;
									boo.xy[ii][3]=1;
									break;
								}	
									
								else if(tank.direction==4)
								{
									boo.xy[ii][0]=tank.xy[0][0]-2;
									boo.xy[ii][1]=tank.xy[0][1];
									boo.xy[ii][2]=tank.direction;
									boo.xy[ii][3]=1;
									break;
								}							
							}							
							
						}
					}	

				};break; 
				case 27:
				case 'E':
				case 'e':main();break;
				default :;break;
			}
		}
		pri_all(0);  
		Sleep(10);
		
		
		
		//自动控制 
		
		
	}
}


开源中国-程序员在线工具:Git代码托管 API文档大全(120+) JS在线编辑演示 二维码 更多»

发表评论 回到顶部 网友评论(31)

  • 1楼:在路上逛开源 发表于 2014-03-06 08:39 回复此评论
  • 2楼:marker 发表于 2014-03-06 08:48 回复此评论
    应该有闪屏问题
  • 3楼:Rhys 发表于 2014-03-06 08:53 回复此评论

    感觉很厉害的样子

  • 4楼:陈能涛 发表于 2014-03-06 13:27 回复此评论
    已经编译,能正常运行!
  • 5楼:梦想游戏人 发表于 2014-03-06 15:27 回复此评论

    引用来自“舞维天下”的评论

    应该有闪屏问题
    概率很小,没学DX OPENGL等 只好用 printf输出图像了, 效率很低,敌人不敢太多
  • 6楼:梦想游戏人 发表于 2014-03-06 15:31 回复此评论

    引用来自“陈能涛”的评论

    已经编译,能正常运行!
    谢谢支持
  • 7楼:Y_F 发表于 2014-03-06 21:58 回复此评论
    好厉害的样子,LZ能不能简要说下怎么做出来的,代码好长。。。
  • 8楼:Y_F 发表于 2014-03-06 23:04 回复此评论
    给个建议,函数返回类型void这类的关键字尽量别省,代码规范,养成好习惯
  • 9楼:梦想游戏人 发表于 2014-03-07 12:36 回复此评论

    引用来自“Y_F”的评论

    好厉害的样子,LZ能不能简要说下怎么做出来的,代码好长。。。
    游戏玩法分析,然后相应的函数实现
  • 10楼:梦想游戏人 发表于 2014-03-07 12:36 回复此评论

    引用来自“Y_F”的评论

    给个建议,函数返回类型void这类的关键字尽量别省,代码规范,养成好习惯
    谢谢提醒,刚开始学 没怎么注意,
  • 11楼:菜鸟在路上ing 发表于 2014-03-07 19:56 回复此评论
    请问你是成都哪个学校的,我是重庆的
  • 12楼:lazyphp 发表于 2014-03-08 23:10 回复此评论
    这个不错~支持楼主!
  • 13楼:cheneh 发表于 2014-03-09 11:57 回复此评论
    果断顶楼主一个。
  • 14楼:梦想游戏人 发表于 2014-03-09 16:49 回复此评论

    引用来自“cheneh”的评论

    果断顶楼主一个。
    谢谢
  • 15楼:梦想游戏人 发表于 2014-03-09 16:49 回复此评论

    引用来自“lazyphp”的评论

    这个不错~支持楼主!
    谢谢
  • 16楼:狮子的魂 发表于 2014-03-09 21:16 回复此评论
    顶起,很不错。。。。 
  • 17楼:梦想游戏人 发表于 2014-03-09 22:21 回复此评论

    引用来自“狮子的魂”的评论

    顶起,很不错。。。。 
    谢谢对新手的支持
  • 18楼:子矜 发表于 2014-03-10 15:13 回复此评论
    楼主你这么叼 你家人知道么
  • 19楼:haitaosoft 发表于 2014-03-10 17:56 回复此评论
    使用conio.h或esc控制码,可以定位输出

    一般文本模式的ide都是这样实现的
  • 20楼:梦想游戏人 发表于 2014-03-10 23:05 回复此评论

    引用来自“子矜”的评论

    楼主你这么叼 你家人知道么
    还真不知道= =!
开源从代码分享开始 分享代码
梦想游戏人的其它代码 全部(2)...