一、怎么写游戏代码
首先请先学一门语言,c类,java,python其中三选一,当你学会基础之后,就可以采用各种网上有的库来编写一款游戏了 还有一种办法就是下载一款图形编程软件,类似processing等,这些都需要用到上述其中一种语言
二、适合win10系统的c语言五子棋代码
1、#include <stdio.h>
2、#define N 16
3、//显示五子棋棋盘
4、void wzq_show(char (*GAME)[N])
5、{
6、 int i=0,j=0;
7、 printf("五子棋棋盘如下:\n");
8、 for(i=0;i<N;i++)
9、 {
10、 for(j=0;j<N;j++)
11、 {
12、 printf("%c ",GAME[i][j]);
13、 }
14、 printf("\n");
15、 }
16、}
17、//初始化五子棋棋盘
18、void wzq_init(char (*GAME)[N])
19、{
20、 int i=0,j=0;
21、 for(i=0;i<N;i++)
22、 {
23、 for(j=0;j<N;j++)
24、 {
25、 GAME[i][j]='+';
26、 }
27、 }
28、//memset(GAME,'+',N*N);
29、}
30、//游戏是否胜利的运算,一旦有人胜利则返回1
31、int wzq_play(int a,int b,char (*GAME)[N])
32、{
33、 int i=0,j=0,k=0;
34、//方向-上的
35、 for(j=b-4;j<b+4;j++)
36、 {
37、 if(j<0 || j>N-1)
38、 {
39、 continue;
40、 }
41、 for(i=0;i<5;i++)
42、 {
43、 if('@'==GAME[a][j+i] ||'+'==GAME[a][j+i])
44、 {
45、 break;
46、 }
47、 if('O'==GAME[a][j+i] &&4==i)
48、 {
49、 printf("\n恭喜你,白家-方向上获胜!\n");
50、 return 1;
51、 }
52、 }
53、 }
54、//方向|上的
55、 for(i=a-4;i<a+4;i++)
56、 {
57、 if(i<0 || i>N-1)
58、 {
59、 continue;
60、 }
61、 for(j=0;j<5;j++)
62、 {
63、 if('@'==GAME[i+j][b] ||'+'==GAME[i+j][b])
64、 {
65、 break;
66、 }
67、 if('O'==GAME[i+j][b] &&4==j)
68、 {
69、 printf("\n恭喜你,白家|方向上获胜!\n");
70、 return 1;
71、 }
72、 }
73、 }
74、//方向\上的
75、 for(i=a-4,j=b-4;i<a+4 && j<b+4;i++,j++)
76、 {
77、 if(i<0 || i>N-1 || j<0 || j>N-1)
78、 {
79、 continue;
80、 }
81、 for(k=0;k<5;k++)
82、 {
83、 if('@'==GAME[i+k][j+k] ||'+'==GAME[i+k][j+k])
84、 {
85、 break;
86、 }
87、 if('O'==GAME[i+k][j+k] &&4==k)
88、 {
89、 printf("\n恭喜你,白家\方向上获胜!\n");
90、 return 1;
91、 }
92、 }
93、 }
94、//方向/上的
95、 for(i=a+4,j=b-4;i>a-4 && j<b+4;i--,j++)
96、 {
97、 if(i<0 || i>N-1 || j<0 || j>N-1)
98、 {
99、 continue;
100、 }
101、 for(k=0;k<5;k++)
102、 {
103、 if('@'==GAME[i-k][j+k] ||'+'==GAME[i-k][j+k])
104、 {
105、 break;
106、 }
107、 if('O'==GAME[i-k][j+k] &&4==k)
108、 {
109、 printf("\n恭喜你,白家/方向上获胜!\n");
110、 return 1;
111、 }
112、 }
113、 }
114、 return 0;
115、}
116、int main()
117、{
118、char GAME[N][N]={0};
119、int count=0;//轮换落子计算
120、int m=0,n=0;//白家
121、int x=0,y=0;//黑家
122、int res=0;
123、int k=0;
124、wzq_init(GAME);
125、wzq_show(GAME);
126、while(1)
127、{
128、//当棋盘格子被下满了时
129、if(N*N==count)
130、{
131、printf("棋盘已经下满了,平局!\n");
132、return 0;
133、}
134、if(0==count%2)
135、{
136、printf("请白家落子(例如0 3或1 3):");
137、scanf("%d%d",&m,&n);
138、while(m<0 || m>N-1 || n<0 || n>N-1)
139、{
140、printf("输入的坐标超出范围,请重新输入:");
141、scanf("%d%d",&m,&n);
142、}
143、while('+'!=GAME[m][n])
144、{
145、printf("此处已经落过子,请重新落子:");
146、scanf("%d%d",&m,&n);
147、}
148、GAME[m][n]='O';
149、res=wzq_play(m,n,GAME);
150、if(1==res)
151、{
152、wzq_show(GAME);
153、printf("程序结束\n");
154、return 0;
155、}
156、}else
157、{
158、printf("请黑家落子(例如0 3或1 3):");
159、scanf("%d%d",&x,&y);
160、while(m<0 || m>N-1 || n<0 || n>N-1)
161、{
162、printf("输入的坐标超出范围,请重新输入:");
163、scanf("%d%d",&m,&n);
164、}
165、while('+'!=GAME[x][y])
166、{
167、printf("此处已经落过子,请重新落子:");
168、scanf("%d%d",&x,&y);
169、}
170、GAME[x][y]='@';
171、res=wzq_play(x,y,GAME);
172、if(1==res)
173、{
174、wzq_show(GAME);
175、printf("程序结束\n");
176、return 0;
177、}
178、}
179、count++;
180、wzq_show(GAME);
181、}
182、}
三、c语言开头代码是什么
1、在C语言中,一般的开头代码包括头文件引用、函数声明和main函数的定义。一般的模板代码如下:
2、```c
3、#include <stdio.h> // 头文件引用
4、int main() { // main函数的定义
5、 // 代码逻辑
6、 return 0; // 返回值
7、}
8、```
9、其中:
10、- `#include <stdio.h>` 引用了stdio.h头文件,该头文件包含了标准输入输出函数的声明,如printf、scanf等。
11、- `int main()` 定义了一个返回值为整数类型的main函数。
12、- `{}` 中间的代码是main函数的主体,包括程序的逻辑和处理过程。
13、- `return 0;` 表示main函数的返回值为0,表示程序执行成功。
14、当然,实际的C语言代码可能会更加复杂,会包含更多的头文件和函数定义。但是,以上的代码模板是C语言程序的基本框架,可以作为C语言程序的基础。
四、c语言贪吃蛇代码及解析
1、
#include<stdio.h>
2、#include<time.h>
3、#include<windows.h>
4、#include<stdlib.h>
5、#define U 1
6、#define D 2
7、#define L 3
8、#define R 4 //蛇的状态,U:上 ;D:下;L:左 R:右
9、typedef struct SNAKE //蛇身的一个节点
10、{
11、int x;
12、int y;
13、struct SNAKE *next;
14、}snake;
15、//全局变量//
16、int score=0,add=10;//总得分与每次吃食物得分。
17、int status,sleeptime=200;//每次运行的时间间隔
18、snake *head, *food;//蛇头指针,食物指针
19、snake *q;//遍历蛇的时候用到的指针
20、int endgamestatus=0; //游戏结束的情况,1:撞到墙;2:咬到自己;3:主动退出游戏。
21、//声明全部函数//
22、void Pos();
23、void creatMap();
24、void initsnake();
25、int biteself();
26、void createfood();
27、void cantcrosswall();
28、void snakemove();
29、void pause();
30、void gamecircle();
31、void welcometogame();
32、void endgame();
33、void gamestart();
34、void Pos(int x,int y)//设置光标位置
35、{
36、COORD pos;
37、HANDLE hOutput;
38、pos.X=x;
39、pos.Y=y;
40、hOutput=GetStdHandle(STD_OUTPUT_HANDLE);
41、SetConsoleCursorPosition(hOutput,pos);
42、}
43、void creatMap()//创建地图
44、{
45、int i;
46、for(i=0;i<58;i+=2)//打印上下边框
47、{
48、Pos(i,0);
49、printf("■");
50、Pos(i,26);
51、printf("■");
52、}
53、for(i=1;i<26;i++)//打印左右边框
54、{
55、Pos(0,i);
56、printf("■");
57、Pos(56,i);
58、printf("■");
59、}
60、}
61、void initsnake()//初始化蛇身
62、{
63、snake *tail;
64、int i;
65、tail=(snake*)malloc(sizeof(snake));//从蛇尾开始,头插法,以x,y设定开始的位置//
66、tail->x=24;
67、tail->y=5;
68、tail->next=NULL;
69、for(i=1;i<=4;i++)
70、{
71、head=(snake*)malloc(sizeof(snake));
72、head->next=tail;
73、head->x=24+2*i;
74、head->y=5;
75、tail=head;
76、}
77、while(tail!=NULL)//从头到为,输出蛇身
78、{
79、Pos(tail->x,tail->y);
80、printf("■");
81、tail=tail->next;
82、}
83、}
84、int biteself()//判断是否咬到了自己
85、{
86、snake *self;
87、self=head->next;
88、while(self!=NULL)
89、{
90、if(self->x==head->x && self->y==head->y)
91、{
92、return 1;
93、}
94、self=self->next;
95、}
96、return 0;
97、}
98、void createfood()//随机出现食物
99、{
100、snake *food_1;
101、srand((unsigned)time(NULL));
102、food_1=(snake*)malloc(sizeof(snake));
103、while((food_1->x%2)!=0) //保证其为偶数,使得食物能与蛇头对其
104、{
105、food_1->x=rand()%52+2;
106、}
107、food_1->y=rand()%24+1;
108、q=head;
109、while(q->next==NULL)
110、{
111、if(q->x==food_1->x && q->y==food_1->y) //判断蛇身是否与食物重合
112、{
113、free(food_1);
114、createfood();
115、}
116、q=q->next;
117、}
118、Pos(food_1->x,food_1->y);
119、food=food_1;
120、printf("■");
121、}
122、void cantcrosswall()//不能穿墙
123、{
124、if(head->x==0 || head->x==56 ||head->y==0 || head->y==26)
125、{
126、endgamestatus=1;
127、endgame();
128、}
129、}
130、void snakemove()//蛇前进,上U,下D,左L,右R
131、{
132、snake * nexthead;
133、cantcrosswall();
134、nexthead=(snake*)malloc(sizeof(snake));
135、if(status==U)
136、{
137、nexthead->x=head->x;
138、nexthead->y=head->y-1;
139、if(nexthead->x==food->x && nexthead->y==food->y)//如果下一个有食物//
140、{
141、nexthead->next=head;
142、head=nexthead;
143、q=head;
144、while(q!=NULL)
145、{
146、Pos(q->x,q->y);
147、printf("■");
148、q=q->next;
149、}
150、score=score+add;
151、createfood();
152、}
153、else //如果没有食物//
154、{
155、nexthead->next=head;
156、head=nexthead;
157、q=head;
158、while(q->next->next!=NULL)
159、{
160、Pos(q->x,q->y);
161、printf("■");
162、q=q->next;
163、}
164、Pos(q->next->x,q->next->y);
165、printf(" ");
166、free(q->next);
167、q->next=NULL;
168、}
169、}
170、if(status==D)
171、{
172、nexthead->x=head->x;
173、nexthead->y=head->y+1;
174、if(nexthead->x==food->x && nexthead->y==food->y) //有食物
175、{
176、nexthead->next=head;
177、head=nexthead;
178、q=head;
179、while(q!=NULL)
180、{
181、Pos(q->x,q->y);
182、printf("■");
183、q=q->next;
184、}
185、score=score+add;
186、createfood();
187、}
188、else //没有食物
189、{
190、nexthead->next=head;
191、head=nexthead;
192、q=head;
193、while(q->next->next!=NULL)
194、{
195、Pos(q->x,q->y);
196、printf("■");
197、q=q->next;
198、}
199、Pos(q->next->x,q->next->y);
200、printf(" ");
201、free(q->next);
202、q->next=NULL;
203、}
204、}
205、if(status==L)
206、{
207、nexthead->x=head->x-2;
208、nexthead->y=head->y;
209、if(nexthead->x==food->x && nexthead->y==food->y)//有食物
210、{
211、nexthead->next=head;
212、head=nexthead;
213、q=head;
214、while(q!=NULL)
215、{
216、Pos(q->x,q->y);
217、printf("■");
218、q=q->next;
219、}
220、score=score+add;
221、createfood();
222、}
223、else //没有食物
224、{
225、nexthead->next=head;
226、head=nexthead;
227、q=head;
228、while(q->next->next!=NULL)
229、{
230、Pos(q->x,q->y);
231、printf("■");
232、q=q->next;
233、}
234、Pos(q->next->x,q->next->y);
235、printf(" ");
236、free(q->next);
237、q->next=NULL;
238、}
239、}
240、if(status==R)
241、{
242、nexthead->x=head->x+2;
243、nexthead->y=head->y;
244、if(nexthead->x==food->x && nexthead->y==food->y)//有食物
245、{
246、nexthead->next=head;
247、head=nexthead;
248、q=head;
249、while(q!=NULL)
250、{
251、Pos(q->x,q->y);
252、printf("■");
253、q=q->next;
254、}
255、score=score+add;
256、createfood();
257、}
258、else //没有食物
259、{
260、nexthead->next=head;
261、head=nexthead;
262、q=head;
263、while(q->next->next!=NULL)
264、{
265、Pos(q->x,q->y);
266、printf("■");
267、q=q->next;
268、}
269、Pos(q->next->x,q->next->y);
270、printf(" ");
271、free(q->next);
272、q->next=NULL;
273、}
274、}
275、if(biteself()==1) //判断是否会咬到自己
276、{
277、endgamestatus=2;
278、endgame();
279、}
280、}
281、void pause()//暂停
282、{
283、while(1)
284、{
285、Sleep(300);
286、if(GetAsyncKeyState(VK_SPACE))
287、{
288、break;
289、}
290、}
291、}
292、void gamecircle()//控制游戏
293、{
294、Pos(64,15);
295、printf("不能穿墙,不能咬到自己\n");
296、Pos(64,16);
297、printf("用↑.↓.←.→分别控制蛇的移动.");
298、Pos(64,17);
299、printf("F1 为加速,F2 为减速\n");
300、Pos(64,18);
301、printf("ESC :退出游戏.space:暂停游戏.");
302、Pos(64,20);
303、printf("c语言研究中心 www.dotcpp.com");
304、status=R;
305、while(1)
306、{
307、Pos(64,10);
308、printf("得分:%d ",score);
309、Pos(64,11);
310、printf("每个食物得分:%d分",add);
311、if(GetAsyncKeyState(VK_UP) && status!=D)
312、{
313、status=U;
314、}
315、else if(GetAsyncKeyState(VK_DOWN) && status!=U)
316、{
317、status=D;
318、}
319、else if(GetAsyncKeyState(VK_LEFT)&& status!=R)
320、{
321、status=L;
322、}
323、else if(GetAsyncKeyState(VK_RIGHT)&& status!=L)
324、{
325、status=R;
326、}
327、else if(GetAsyncKeyState(VK_SPACE))
328、{
329、pause();
330、}
331、else if(GetAsyncKeyState(VK_ESCAPE))
332、{
333、endgamestatus=3;
334、break;
335、}
336、else if(GetAsyncKeyState(VK_F1))
337、{
338、if(sleeptime>=50)
339、{
340、sleeptime=sleeptime-30;
341、add=add+2;
342、if(sleeptime==320)
343、{
344、add=2;//防止减到1之后再加回来有错
345、}
346、}
347、}
348、else if(GetAsyncKeyState(VK_F2))
349、{
350、if(sleeptime<350)
351、{
352、sleeptime=sleeptime+30;
353、add=add-2;
354、if(sleeptime==350)
355、{
356、add=1; //保证最低分为1
357、}
358、}
359、}
360、Sleep(sleeptime);
361、snakemove();
362、}
363、}
364、void welcometogame()//开始界面
365、{
366、Pos(40,12);
367、system("title c语言研究中心 www.dotcpp.com");
368、printf("欢迎来到贪食蛇游戏!");
369、Pos(40,25);
370、system("pause");
371、system("cls");
372、Pos(25,12);
373、printf("用↑.↓.←.→分别控制蛇的移动, F1 为加速,2 为减速\n");
374、Pos(25,13);
375、printf("加速将能得到更高的分数。\n");
376、system("pause");
377、system("cls");
378、}
379、void endgame()//结束游戏
380、{
381、system("cls");
382、Pos(24,12);
383、if(endgamestatus==1)
384、{
385、printf("对不起,您撞到墙了。游戏结束.");
386、}
387、else if(endgamestatus==2)
388、{
389、printf("对不起,您咬到自己了。游戏结束.");
390、}
391、else if(endgamestatus==3)
392、{
393、printf("您的已经结束了游戏。");
394、}
395、Pos(24,13);
396、printf("您的得分是%d\n",score);
397、exit(0);
398、}
399、void gamestart()//游戏初始化
400、{
401、system("mode con cols=100 lines=30");
402、welcometogame();
403、creatMap();
404、initsnake();
405、createfood();
406、}
407、int main()
408、{
409、gamestart();
410、gamecircle();
411、endgame();
412、return 0;
413、}
五、贪吃蛇c语言代码最短
1、
#include <bits/stdc++.h>
2、#include <windows.h>
3、#include <conio.h>
4、using namespace std;
5、void gotoxy(int x,int y) {COORD pos={x,y}; SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);}//光标定位
6、class Food {//食物类
7、private: int m_x; int m_y;
8、public:
9、void randfood() {//随机产生一个食物
10、srand((int)time(NULL));//利用时间添加随机数种子,需要ctime头文件
11、L1:{m_x=rand()%(85)+2;//2~86
12、m_y=rand()%(25)+2;//2~26
13、if(m_x%2) goto L1;//如果食物的x坐标不是偶数则重新确定食物的坐标
14、gotoxy(m_x,m_y);//在确认好的位置输出食物
15、cout << "★";}}
16、int getFoodm_x() {return m_x;}//返回食物的x坐标
17、int getFoodm_y() {return m_y;}};//返回食物的y坐标
18、class Snake {
19、private:
20、struct Snakecoor {int x; int y;};//定义一个蛇的坐标机构
21、vector<Snakecoor> snakecoor;//将坐标存入vector容器中
22、//判断并改变前进方向的函数
23、void degdir(Snakecoor&nexthead) {//定义新的蛇头变量
24、static char key='d';//静态变量防止改变移动方向后重新改回来
25、if(_kbhit()) {
26、char temp=_getch();//定义一个临时变量储存键盘输入的值
27、switch(temp) {//如果临时变量的值为wasd中的一个,则赋值给key
28、default: break;//default是缺省情况,只有任何条件都不匹配的情况下才会执行 必须写在前面!不然蛇无法转向
29、case'w': case'a': case's': case'd':
30、//如果temp的方向和key的方向不相反则赋值 因为两次移动方向不能相反 将蛇设置为初始向右走
31、if(key=='w' && temp!='s' || key=='s' && temp!='w' || key=='a' && temp!='d' || key=='d' && temp!='a') key=temp;}}
32、switch (key) {//根据key的值来确定蛇的移动方向
33、case'd': nexthead.x=snakecoor.front().x+2; nexthead.y=snakecoor.front().y; break;
34、//新的蛇头的头部等于容器内第一个数据(旧蛇头)x坐标+2 因为蛇头占两个坐标,移动一次加2
35、case'a': nexthead.x=snakecoor.front().x-2; nexthead.y=snakecoor.front().y; break;
36、case'w': nexthead.x=snakecoor.front().x; nexthead.y=snakecoor.front().y-1; break;
37、//因为控制台的x长度是y的一半,所以用两个x做蛇头,需要的坐标是二倍
38、case's': nexthead.x=snakecoor.front().x; nexthead.y=snakecoor.front().y+1;}}
39、//游戏结束时设计一个界面输出“游戏结束”以及分数
40、void finmatt(const int score) {
41、system("cls"); gotoxy(40, 14);//清屏然后输出
42、cout << "游戏结束"; gotoxy(40, 16);
43、cout << "得分:" << score; gotoxy(0, 26);
44、exit(0);}//exit为C++的退出函数 exit(0)表示程序正常退出,非0表示非正常退出
45、void finishgame(const int score) {//游戏结束
46、if(snakecoor[0].x>=88 || snakecoor[0].x<0 || snakecoor[0].y>=28 || snakecoor[0].y<0) finmatt(score);//撞墙
47、for(int i=1;i<snakecoor.size();i++) if(snakecoor[0].x==snakecoor[i].x && snakecoor[0].y==snakecoor[i].y) finmatt(score