鱼C论坛

 找回密码
 立即注册
查看: 2871|回复: 6

为什么网上多数的源码运行不了啊

[复制链接]
发表于 2012-7-14 21:17:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 we6540 于 2012-7-14 21:20 编辑

为什么在网上下载的C源码多数运行不了啊! 比如这个扫雷游戏
一编译就弹出这个错误
  1. :\qwd\3.cpp(2) : fatal error C1083: Cannot open include file: 'graphics.h': No such file or directory
  2. 执行 cl.exe 时出错.
复制代码


这是怎么回事啊求各位鱼油求解
  1. //扫雷游戏
  2. #include <graphics.h>
  3. #include <stdlib.h>
  4. #include <dos.h>
  5. #define LEFTPRESS 0xff01
  6. #define LEFTCLICK 0xff10
  7. #define LEFTDRAG 0xff19
  8. #define MOUSEMOVE 0xff08
  9. struct
  10. {
  11. int num;
  12. int roundnum;
  13. int flag;
  14. }Mine[10][10];
  15. int gameAGAIN=0;
  16. int gamePLAY=0;
  17. int mineNUM;
  18. char randmineNUM[3];
  19. int Keystate;
  20. int MouseExist;
  21. int MouseButton;
  22. int MouseX;
  23. int MouseY;
  24. void Init(void);
  25. void MouseOn(void);
  26. void MouseOff(void);
  27. void MouseSetXY(int,int);
  28. int LeftPress(void);
  29. int RightPress(void);
  30. void MouseGetXY(void);
  31. void Control(void);
  32. void GameBegain(void);
  33. void DrawSmile(void);
  34. void DrawRedflag(int,int);
  35. void DrawEmpty(int,int,int,int);
  36. void GameOver(void);
  37. void GameWin(void);
  38. int MineStatistics(int,int);
  39. int ShowWhite(int,int);
  40. void GamePlay(void);
  41. void Close(void);
  42. void main(void)
  43. {
  44. Init();
  45. Control();
  46. Close();
  47. }
  48. void Init(void)
  49. {
  50. int gd=DETECT,gm;
  51. initgraph(&gd,&gm,"D://tc20//BGI");
  52. }
  53. void Close(void)
  54. {
  55. closegraph();
  56. }
  57. void MouseOn(void)
  58. {
  59. _AX=0x01;
  60. geninterrupt(0x33);
  61. }
  62. void MouseOff(void)
  63. {
  64. _AX=0x02;
  65. geninterrupt(0x33);
  66. }
  67. void MouseSetXY(int x,int y)
  68. {
  69. _CX=x;
  70. _DX=y;
  71. _AX=0x04;
  72. geninterrupt(0x33);
  73. }
  74. int LeftPress(void)
  75. {
  76. _AX=0x03;
  77. geninterrupt(0x33);
  78. return(_BX&1);
  79. }
  80. int RightPress(void)
  81. {
  82. _AX=0x03;
  83. geninterrupt(0x33);
  84. return(_BX&2);
  85. }
  86. void MouseGetXY(void)
  87. {
  88. _AX=0x03;
  89. geninterrupt(0x33);
  90. MouseX=_CX;
  91. MouseY=_DX;
  92. }
  93. void Control(void)
  94. {
  95. int gameFLAG=1;
  96. while(1)
  97. {
  98. if(gameFLAG)
  99. {
  100. GameBegain();
  101. GamePlay();
  102. if(gameAGAIN==1)
  103. {
  104. gameAGAIN=0;
  105. continue;
  106. }
  107. }
  108. MouseOn();
  109. gameFLAG=0;
  110. if(LeftPress())
  111. {
  112. MouseGetXY();
  113. if(MouseX>280&&MouseX<300&&MouseY>65&&MouseY<85)
  114. {
  115. gameFLAG=1;
  116. continue;
  117. }
  118. }
  119. if(kbhit())
  120. break;
  121. }
  122. MouseOff();
  123. }
  124. void DrawSmile(void)
  125. {
  126. setfillstyle(SOLID_FILL,YELLOW);
  127. fillellipse(290,75,10,10);
  128. setcolor(YELLOW);
  129. setfillstyle(SOLID_FILL,BLACK);
  130. fillellipse(285,75,2,2);
  131. fillellipse(295,75,2,2);
  132. setcolor(BLACK);
  133. bar(287,80,293,81);
  134. }
  135. void DrawRedflag(int i,int j)
  136. {
  137. setcolor(7);
  138. setfillstyle(SOLID_FILL,RED);
  139. bar(198+j*20,95+i*20,198+j*20+5,95+i*20+5);
  140. setcolor(BLACK);
  141. line(198+j*20,95+i*20,198+j*20,95+i*20+10);
  142. }
  143. void DrawEmpty(int i,int j,int mode,int color)
  144. {
  145. setcolor(color);
  146. setfillstyle(SOLID_FILL,color);
  147. if(mode==0)
  148. bar(200+j*20-8,100+i*20-8,200+j*20+8,100+i*20+8);
  149. else
  150. if(mode==1)
  151. bar(200+j*20-7,100+i*20-7,200+j*20+7,100+i*20+7);
  152. }
  153. void GameBegain(void)
  154. {
  155. int i,j;
  156. cleardevice();
  157. if(gamePLAY!=1)
  158. {
  159. MouseSetXY(290,70);
  160. MouseX=290;
  161. MouseY=70;
  162. }
  163. gamePLAY=1;
  164. mineNUM=0;
  165. setfillstyle(SOLID_FILL,7);
  166. bar(190,60,390,290);
  167. for(i=0;i<10;i++)
  168. for(j=0;j<10;j++)
  169. DrawEmpty(i,j,0,8);
  170. setcolor(7);
  171. DrawSmile();
  172. randomize();//__page_break__
  173. for(i=0;i<10;i++)
  174. for(j=0;j<10;j++)
  175. {
  176. Mine[i][j].num=random(8);
  177. if(Mine[i][j].num==1)
  178. mineNUM++;
  179. else
  180. Mine[i][j].num=2;
  181. Mine[i][j].flag=0;
  182. }
  183. sprintf(randmineNUM,"%d",mineNUM);
  184. setcolor(1);
  185. settextstyle(0,0,2);
  186. outtextxy(210,70,randmineNUM);
  187. mineNUM=100-mineNUM;
  188. MouseOn();
  189. }
  190. void GameOver(void)
  191. {
  192. int i,j;
  193. setcolor(0);
  194. for(i=0;i<10;i++)
  195. for(j=0;j<10;j++)
  196. if(Mine[i][j].num==1)
  197. {
  198. DrawEmpty(i,j,0,RED);
  199. setfillstyle(SOLID_FILL,BLACK);
  200. fillellipse(200+j*20,100+i*20,7,7);
  201. }
  202. }
  203. void GameWin(void)
  204. {
  205. setcolor(11);
  206. settextstyle(0,0,2);
  207. outtextxy(230,30,"YOU WIN!");
  208. }
  209. int MineStatistics(int i,int j)
  210. {
  211. int nNUM=0;
  212. if(i==0&&j==0)
  213. {
  214. if(Mine[0][1].num==1)
  215. nNUM++;
  216. if(Mine[1][0].num==1)
  217. nNUM++;
  218. if(Mine[1][1].num==1)
  219. nNUM++;
  220. }
  221. else
  222. if(i==0&&j==9)
  223. {
  224. if(Mine[0][8].num==1)
  225. nNUM++;
  226. if(Mine[1][9].num==1)
  227. nNUM++;
  228. if(Mine[1][8].num==1)
  229. nNUM++;
  230. }
  231. else
  232. if(i==9&&j==0)
  233. {
  234. if(Mine[8][0].num==1)
  235. nNUM++;
  236. if(Mine[9][1].num==1)
  237. nNUM++;
  238. if(Mine[8][1].num==1)
  239. nNUM++;
  240. }
  241. else
  242. if(i==9&&j==9)
  243. {
  244. if(Mine[9][8].num==1)
  245. nNUM++;
  246. if(Mine[8][9].num==1)
  247. nNUM++;
  248. if(Mine[8][8].num==1)
  249. nNUM++;
  250. }
  251. else if(j==0)
  252. {
  253. if(Mine[i][j+1].num==1)
  254. nNUM++;
  255. if(Mine[i+1][j].num==1)
  256. nNUM++;
  257. if(Mine[i-1][j].num==1)
  258. nNUM++;
  259. if(Mine[i-1][j+1].num==1)
  260. nNUM++;
  261. if(Mine[i+1][j+1].num==1)
  262. nNUM++;
  263. }
  264. else if(j==9)
  265. {
  266. if(Mine[i][j-1].num==1)
  267. nNUM++;
  268. if(Mine[i+1][j].num==1)
  269. nNUM++;
  270. if(Mine[i-1][j].num==1)
  271. nNUM++;
  272. if(Mine[i-1][j-1].num==1)
  273. nNUM++;
  274. if(Mine[i+1][j-1].num==1)
  275. nNUM++;
  276. }
  277. else if(i==0)
  278. {
  279. if(Mine[i+1][j].num==1)
  280. nNUM++;
  281. if(Mine[i][j-1].num==1)
  282. nNUM++;
  283. if(Mine[i][j+1].num==1)
  284. nNUM++;
  285. if(Mine[i+1][j-1].num==1)
  286. nNUM++;
  287. if(Mine[i+1][j+1].num==1)
  288. nNUM++;
  289. }
  290. else if(i==9)
  291. {
  292. if(Mine[i-1][j].num==1)
  293. nNUM++;
  294. if(Mine[i][j-1].num==1)
  295. nNUM++;
  296. if(Mine[i][j+1].num==1)
  297. nNUM++;
  298. if(Mine[i-1][j-1].num==1)
  299. nNUM++;
  300. if(Mine[i-1][j+1].num==1)
  301. nNUM++;
  302. }
  303. else
  304. {
  305. if(Mine[i-1][j].num==1)
  306. nNUM++;
  307. if(Mine[i-1][j+1].num==1)
  308. nNUM++;
  309. if(Mine[i][j+1].num==1)
  310. nNUM++;
  311. if(Mine[i+1][j+1].num==1)
  312. nNUM++;
  313. if(Mine[i+1][j].num==1)
  314. nNUM++;
  315. if(Mine[i+1][j-1].num==1)
  316. nNUM++;
  317. if(Mine[i][j-1].num==1)
  318. nNUM++;
  319. if(Mine[i-1][j-1].num==1)
  320. nNUM++;
  321. }//__page_break__
  322. return (nNUM);
  323. }
  324. int ShowWhite(int i,int j)
  325. {
  326. if(Mine[i][j].flag==1||Mine[i][j].num==0)
  327. return;
  328. mineNUM--;
  329. if(Mine[i][j].roundnum==0&&Mine[i][j].num!=1)
  330. {
  331. DrawEmpty(i,j,1,7);
  332. Mine[i][j].num=0;
  333. }
  334. else
  335. if(Mine[i][j].roundnum!=0)
  336. {
  337. DrawEmpty(i,j,0,8);
  338. sprintf(randmineNUM,"%d",Mine[i][j].roundnum);
  339. setcolor(RED);
  340. outtextxy(195+j*20,95+i*20,randmineNUM);
  341. Mine[i][j].num=0;
  342. return ;
  343. }

  344. if(i!=0&&Mine[i-1][j].num!=1)
  345. ShowWhite(i-1,j);
  346. if(i!=0&&j!=9&&Mine[i-1][j+1].num!=1)
  347. ShowWhite(i-1,j+1);
  348. if(j!=9&&Mine[i][j+1].num!=1)
  349. ShowWhite(i,j+1);
  350. if(j!=9&&i!=9&&Mine[i+1][j+1].num!=1)
  351. ShowWhite(i+1,j+1);
  352. if(i!=9&&Mine[i+1][j].num!=1)
  353. ShowWhite(i+1,j);
  354. if(i!=9&&j!=0&&Mine[i+1][j-1].num!=1)
  355. ShowWhite(i+1,j-1);
  356. if(j!=0&&Mine[i][j-1].num!=1)
  357. ShowWhite(i,j-1);
  358. if(i!=0&&j!=0&&Mine[i-1][j-1].num!=1)
  359. ShowWhite(i-1,j-1);
  360. }
  361. void GamePlay(void)
  362. {
  363. int i,j,Num;
  364. for(i=0;i<10;i++)
  365. for(j=0;j<10;j++)
  366. Mine[i][j].roundnum=MineStatistics(i,j);
  367. while(!kbhit())
  368. {
  369. if(LeftPress())
  370. {
  371. MouseGetXY();
  372. if(MouseX>280&&MouseX<300&&MouseY>65&&MouseY<85)
  373. {
  374. MouseOff();
  375. gameAGAIN=1;
  376. break;
  377. }
  378. if(MouseX>190&&MouseX<390&&MouseY>90&&MouseY<290)
  379. {
  380. j=(MouseX-190)/20;
  381. i=(MouseY-90)/20;
  382. if(Mine[i][j].flag==1)
  383. continue;
  384. if(Mine[i][j].num!=0)
  385. {
  386. if(Mine[i][j].num==1)
  387. {
  388. MouseOff();
  389. GameOver();
  390. break;
  391. }
  392. else
  393. {
  394. MouseOff();
  395. Num=MineStatistics(i,j);
  396. if(Num==0)
  397. ShowWhite(i,j);
  398. else
  399. {
  400. sprintf(randmineNUM,"%d",Num);
  401. setcolor(RED);
  402. outtextxy(195+j*20,95+i*20,randmineNUM);
  403. mineNUM--;
  404. }
  405. MouseOn();
  406. Mine[i][j].num=0;
  407. if(mineNUM<1)
  408. {
  409. GameWin();
  410. break;
  411. }
  412. }
  413. }
  414. }
  415. }
  416. if(RightPress())
  417. {
  418. MouseGetXY();
  419. if(MouseX>190&&MouseX<390&&MouseY>90&&MouseY<290)
  420. {
  421. j=(MouseX-190)/20;
  422. i=(MouseY-90)/20;
  423. MouseOff();
  424. if(Mine[i][j].flag==0&&Mine[i][j].num!=0)
  425. {
  426. DrawRedflag(i,j);
  427. Mine[i][j].flag=1;
  428. }
  429. else
  430. if(Mine[i][j].flag==1)
  431. {
  432. DrawEmpty(i,j,0,8);
  433. Mine[i][j].flag=0;
  434. }
  435. }
  436. MouseOn();
  437. sleep(1);
  438. }
  439. }
  440. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-7-14 22:04:02 | 显示全部楼层
目测graphics.h好像是TC独有的,(但是听说也可以加到vc的库里面,我自己不是很清楚),你用的应该不是TC编译的吧,用TC编译试试
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-7-14 22:46:09 | 显示全部楼层
你用的是什么编译器运行的哦
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-7-15 00:06:32 | 显示全部楼层
严重关注这个问题
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2012-7-15 00:16:23 | 显示全部楼层

请问能改改后在VC上运行吗?
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-7-15 00:43:37 | 显示全部楼层
应该不行,因为vc不支持graphics.h这个文件,但是我又好像听说过别人可以,你再问问其他人吧
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-7-15 09:42:48 | 显示全部楼层
编这段代码的人用的就是TC,VC很难实现,这位童鞋想要编五子棋,扫雷之类的游戏还是用TC吧。
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-14 04:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表