C语言小游戏编程
C语言模拟掷骰子游戏
C语⾔模拟掷骰⼦游戏⽬录实现掷骰⼦⼩游戏实现原理源码介绍效果展⽰今⽇练习题⽬描述问题分析代码实现运⾏结果实现掷骰⼦⼩游戏在开始今天的练习前,我先写⼀个有趣的C语⾔⼩游戏——掷骰⼦(zhì tóu zi)实现原理⼤家对骰⼦应该不陌⽣,让我们先看看百度词条的介绍:掷骰⼦拼⾳:zhì tóu zi骰⼦:既⾊⼦,⽤象⽛、⾻头或塑料等较坚硬物体做的⼩四⽅块;每⾯刻有点数,⼀到六,常⽤⼀对做各种游戏或赌博。
掷骰⼦:先摇动骰⼦,然后抛掷使两个骰⼦都随意停⽌在⼀平⾯上。
——百度百科掷骰⼦时,每次能掷出的点数为1~6,且是随机的,那么如何⽤C语⾔来产⽣这⼀随机数呢?这时就要⽤到rand()和srand()函数了:srand函数是随机数发⽣器的初始化函数。
原型:void srand(unsigned int seed);srand和rand()配合使⽤产⽣伪随机数序列。
rand():原型:int rand(void),功能:产⽣随机值,从srand (seed)中指定的seed开始,返回⼀个[seed, RAND_MAX(0x7fff))间的随机整数。
srand():原型:void srand(unsigned seed),参数:seed是rand()的种⼦,⽤来初始化rand()的起始值。
功能:可以认为rand()在每次被调⽤时,它都会查看srand(seed)中指定的seed值,如果存在srand(seed),那么它会⾃动调⽤srand(seed)⼀次来初始化它的起始值。
如果⽤户在此之前没有调⽤过srand(seed),它会⾃动调⽤srand(1)⼀次。
——百度百科上⾯提到了rand()函数只能⽣成伪随机数,意思是如果起始值seed固定,那么每次程序运⾏,它产⽣的随机数序列都是相同的,⽽不是真正意义上的随机数。
形象地说,如果seed值固定,那每次程序运⾏,第⼀次掷到的点数都是固定的,这显然不合理,那怎么⽣成更加合理的随机数呢?我们都知道系统的时间值(总秒数)是时刻都在变化着的,如果把时间秒数当做随机数的种⼦seed,那岂不是能实现真正的随机数?答案是⽅法可⾏,但并不能产⽣真正的随机数,因为时间是递增的,是有规律的数字序列,所以产⽣的随机数也会呈现⼀定的规律,但是,此时的随机数已经⾜够我们⽤来完成掷骰⼦游戏了,所以我们也没必要去纠结是否是真正的随机数(可能计算机本来就⽆法产⽣真正随机数)。
C语言程序设计100例之(70):国王游戏
C语⾔程序设计100例之(70):国王游戏例70 国王游戏问题描述恰逢H国国庆,国王邀请n位⼤⾂来玩⼀个有奖游戏。
⾸先,他让每个⼤⾂在左、右⼿上⾯分别写下⼀个整数,国王⾃⼰也在左、右⼿上各写⼀个整数。
然后,让这n位⼤⾂排成⼀排,国王站在队伍的最前⾯。
排好队后,所有的⼤⾂都会获得国王奖赏的若⼲⾦币,每位⼤⾂获得的⾦币数分别是:排在该⼤⾂前⾯的所有⼈的左⼿上的数的乘积除以他⾃⼰右⼿上的数,然后向下取整得到的结果。
国王不希望某⼀个⼤⾂获得特别多的奖赏,所以他想请你帮他重新安排⼀下队伍的顺序,使得获得奖赏最多的⼤⾂,所获奖赏尽可能的少。
注意,国王的位置始终在队伍的最前⾯。
输⼊第⼀⾏包含⼀个整数n,表⽰⼤⾂的⼈数。
第⼆⾏包含两个整数a和b,之间⽤⼀个空格隔开,分别表⽰国王左⼿和右⼿上的整数。
接下来n⾏,每⾏包含两个整数a和b,之间⽤⼀个空格隔开,分别表⽰每个⼤⾂左⼿和右⼿上的整数。
(1≤n≤1,000,0 < a,b < 10000)输出⼀个整数,表⽰重新排列后的队伍中获奖赏最多的⼤⾂所获得的⾦币数。
输⼊样例31 12 37 44 6输出样例2(1)编程思路。
假设前⾯已经排了⼏个⼈(包括国王),设他们左⼿上的数的乘积为P。
现在要给2个⼈排序,设第⼀个⼈左⼿上的数为a1,右⼿上的数为b1;第⼆个⼈左⼿上的数为a2,右⼿上的数为b2。
如果第⼀个⼈排在前⾯优于第⼆个⼈排在前⾯,那么有max(S/b1,S*a1/b2) < max(S/b2,S*a2/b1)⼜由于a1,b1,a2,b2,S>0,所以,S*a1/b2≥S/b2。
如果S*a1/b2 ≥ S*a2/b1,则max(S/b1,S*a1/b2)≥max(S/b2,S*a2/b1) ,与假设⽭盾。
所以S*a1/b2 < S*a2/b1 ,即a1*b1 < a2*b2。
因此,需要将数组按照⼤⾂左右⼿数字的乘积a*b从⼩到⼤排序。
c语言小游戏
简单的c语言迷宫小游戏一、内容:1、本游戏主要实现了人控制键盘方向键使小人(*)走出迷宫。
2、具有的功能: 1)、在游戏菜单里人可以选择不同难度的游戏进行游戏;2)、在游戏过程中,可以通过键盘方向键使小人移动,走出迷宫;3)、在游戏过程中,当人碰到墙壁(#)的时候小人过不去;4)、当人顺利完成游戏之后,输出“========you are win!======”字样,30秒钟后自动返回到游戏菜单;5)、在游戏过程中,人可以通过按Esc键返回游戏菜单;也可以可以按0直接退出游戏;6)、在游戏菜单里,按0键可以退出游戏。
3、具体应用: 1)、人主要同过键盘的1,2,3数字键来选择游戏难度;2)、在游戏中通过Esc键来返回菜单;3)、同过0键退出游戏。
二、上机环境操作系统:windows7 开发工具:VC6.0三、各函数功能说明main() 主函数;menu() 游戏菜单;roadcake() 消去小人路径;introduce() 游戏介绍;system(“cls”)消屏函数;exit(0) 退出游戏;drawmg1() 画初级难度迷宫;drawmg2() 画中级难度迷宫;drawmg3() 画高级难度迷宫;control1() 控制初级难度游戏;control2() 控制中级难度游戏;control3() 控制高级难度游戏;四、算法流程图首先定义三个全局数组mg1[20][20]、mg2[30][30]、mg3[30][30]用于画出迷宫的地图;1表示墙(#),0表示空地();Introduce( )函数里如果按Enter键,则调用menu( )函数,从键盘中输入相应的提示数字,进入难度不同的游戏;游戏的执行在此只初级难度进行描述,其余的难度与其类似;选了1后调用system(”cls”)进行清屏;drawmg1()函数进行迷宫的地图的绘制, for(i=0;i<20;i++){printf("\t\t\t");for(j=0;j<20;j++){ch=mg1[i][j];switch(ch){case 4: printf("*");break;case 0: printf(" ");break;case 1: printf("#");break;}if(num++%20==0) /*每行只能输出20个字符*/printf(”\n”);}}之后调用控制函数control1()进行控制小人移动路径,在control1()函数里用do—while()语句进行循环,while(1)进行死循环,再定义四个整型a,b,m,n即:for(n=0;n<30;n++)for(m=0;m<30;m++)if(mg3[n][m]==4){a=n; /*为后面调用roadcake()实现消除小人路径进行初始赋值*/b=m;break;}用switch()语句选择方向键,在调用roadcake()函数进行消除小人路径 void roadcake(int *i,int *j){int temp;temp=*i; /*进行值交换,即数组值为0和值为4进行交换*i=*j;*j=temp;}完成第一个控制之后进行清屏和画新的游戏状态图,若在游戏进行中要退出游戏,只需按0键,调用exit(0)函数结束;若要返回游戏菜单,按Esc键掉用menu()函数即可,重复以上步骤,直达游戏结束,此时掉用menu()函数自动返回菜单。
c语言弹跳小球代码
c语言弹跳小球代码C语言是一门广泛应用于编程领域的编程语言,具有高效、灵活、易学易用等特点。
在很多编程领域中,C语言都具有很重要的应用价值。
比如在游戏编程领域中,我们可以通过C语言代码实现很多有趣的游戏特效,比如让一个小球跳动起来,给人们带来很有趣的视觉效果。
下面我们就来一起看看如何通过C语言实现一个弹跳小球的代码。
第一步,先定义游戏中需要用到的参数,比如窗口的高度和宽度等。
这里我们假设窗口的高度为600,宽度为800。
```#define WIDTH 800#define HEIGHT 600```第二步,定义窗口的风格。
这里我们使用win32api,并定义窗口的风格为WS_POPUP```HWND hwnd;WNDCLASSEX wc;HINSTANCE hInstance;wc.cbSize = sizeof(WNDCLASSEX);wc.style = CS_VREDRAW | CS_HREDRAW;wc.lpfnWndProc = WndProc;wc.hInstance = hInstance;wc.hCursor = LoadCursor(NULL, IDC_ARROW);wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);wc.lpszClassName = L"MainWndClass";RegisterClassEx(&wc);hwnd = CreateWindowEx(0,L"MainWndClass",L"弹跳小球",WS_POPUP,0, 0,WIDTH, HEIGHT,NULL,NULL,hInstance,NULL);```第三步,创建一个圆形小球,将其位置定于窗口的正中央,并且设定小球的初始速度为10(设置初始速度非常重要,因为它决定了小球弹跳的高度)。
c语言游戏编程课程设计
c语言游戏编程课程设计一、课程目标知识目标:1. 理解C语言的基本语法,掌握变量、数据类型、运算符等基础概念;2. 学会使用C语言进行流程控制,包括条件语句和循环语句;3. 掌握C语言数组、函数和指针的基本应用;4. 了解C语言中结构体和文件操作的基础知识;5. 学习C语言中与游戏编程相关的图形库和事件处理机制。
技能目标:1. 能够运用C语言编写简单的游戏程序,如“贪吃蛇”、“五子棋”等;2. 学会分析游戏需求,设计合理的程序结构和算法;3. 掌握基本的程序调试和错误处理方法,提高解决问题的能力;4. 能够与团队成员协作完成一个简单的C语言游戏项目。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发创造力和想象力;2. 培养学生的团队协作精神,提高沟通与协作能力;3. 培养学生面对问题积极求解的态度,提高自信心和自主学习能力;4. 引导学生关注游戏编程与社会实际问题的联系,培养社会责任感。
课程性质:本课程为实践性较强的课程,旨在通过C语言游戏编程,使学生掌握编程基础知识和技能,同时培养学生的团队合作能力和创新意识。
学生特点:学生具备一定的计算机操作能力,对编程有一定兴趣,但可能缺乏实际编程经验。
教学要求:教师需关注学生的个体差异,提供个性化指导,注重理论与实践相结合,使学生在实践中掌握编程技能,提高解决问题的能力。
同时,关注学生的情感态度价值观的培养,引导他们健康成长。
二、教学内容1. C语言基础语法:变量、数据类型、运算符、表达式和语句;2. 流程控制:条件语句(if-else)、循环语句(for、while、do-while);3. 函数:函数定义、调用、传参,递归函数;4. 数组:一维数组、二维数组,数组操作;5. 指针:指针的概念、指针与数组、指针与函数;6. 结构体:结构体的定义、初始化、访问和操作;7. 文件操作:文件的打开、读取、写入和关闭;8. 图形库和事件处理:了解C语言中常用的图形库(如SDL、Allegro等),学习事件处理机制;9. 游戏编程实例:贪吃蛇、五子棋等;10. 团队项目:设计与开发一个简单的C语言游戏项目。
cc++小游戏源代码
cc++⼩游戏源代码翻到开学之初写的⼀些⼩游戏,陆续给⼤家发出来,也便提⾼新⼿们的编程兴趣。
(已详细注释)⼏个对应头⽂件需要注意⼀下,但不必太过恐慌,因为,,,很多,⽤的时候找需要的即可(在Dev,codeblocks,VC上都能运⾏)#include<stdio.h>#include<time.h>#include<stdlib.h>#include<conio.h>#include<windows.h> //下⾯Sleep()函数的头⽂件#include<mmsystem.h>void menu(){printf(" *****************************\n");printf(" *****************************\n");printf(" ************1.play***********\n");printf(" ************0.exit***********\n");printf(" **********2.chakan***********\n");printf(" *********3.qingkong**********\n");printf(" *****************************\n");printf("请选择: \n");}void game(){system("cls");system ( "color 33" ); //设置颜⾊FILE *fp;if((fp=fopen("D:\\caishuziyou.txt","a+"))==NULL){printf("open file error\n");return ;}int rand_num=rand()%100;int tmp=0,t=0;while(1){int flag=0;printf("请输⼊你要猜的数字:");scanf("%d",&tmp);if(tmp>rand_num){printf("猜⼤了!\n");flag=0;}if(tmp<rand_num){printf("猜⼩了!\n");flag=0;}if(tmp==rand_num){printf("正确!恭喜!\n");printf("共⽤了%d次\n",t+1);FILE *fp;fp=fopen("D:\\caishuziyou.txt","w");if(fp==NULL){printf("create file failed\n");return ;}fprintf(fp,"%d",t+1);fclose(fp);break;}if(flag==0) t++;printf(" 你再猜:\n");}printf("\n按任意键返回⽬录");getch();}void menu2(){system("cls");system ( "color B6" ); //设置颜⾊printf("即将登陆系统\n");getch();for(int t=3;t>=1;t--){system("cls");printf("%d",t);Sleep(700);system("cls");}}void chakan(){system("cls");system ( "color E0" ); //设置颜⾊int t=0;FILE*fp;if((fp=fopen("D:\\caishuziyou.txt","r"))==NULL){printf("can not to open the file!\n");exit(0);}while(fscanf(fp,"%d",&t)!=EOF)//若不到⽂件结尾则继续{printf("此玩家共进⾏了%d次\n",t);}printf("\n按任意键返回⽬录");getch();}void qk()//清空{FILE *fp;system("cls"); //清屏函数,不管下⾯是否保存数据,每次输⼊新数据是屏幕上只能有此次的数据 system ( "color C0" ); //设置颜⾊if((fp=fopen("D:\\caishuziyou.txt","w"))==NULL){printf("open file error\n");return;}fclose(fp);printf("\n按任意键返回!");getch();}int main(){int input=0;srand((unsigned)time(NULL));do{//while(1)//{system("cls");menu();// printf("请选择:");scanf("%d",&input);switch(input){case 1:menu2();game();break;case 2:chakan();break;case 3:qk();break;case 0:exit(0);break;default:printf("输⼊错误!请重新输⼊!");}//}}while(input);return 0;}C语⾔⾥⽐较重要的知识也就⽂件、指针、链表、结构体和数组了,本⽂⽤的⽂件希望⼤家能将知识化为⼰⽤。
c语言编写的小游戏代码
用vc6.0新建一个Win32 Application工程,把附件代码拷贝进去即可。
上下左右键控制蛇的方向,空格键用于启动或者停止游戏。
上下左右空格键#include <windows.h>#include <stdio.h>#include<time.h>#define C_W 516#define C_H 548//#define C_W 1024//#define C_H 1024#define GO_RIGHT 0x01#define GO_DOWN 0x02#define GO_LEFT 0x03#define GO_UP 0x04#define SNAKE_NUMBER 30typedef struct node_struct{unsigned char direction;unsigned char cnt;}s_node,*s_node_handle;s_node s_count[SNAKE_NUMBER ];typedef struct SNAKE{unsigned char Head_X;unsigned char Head_Y;unsigned char Tail_X;unsigned char Tail_Y;unsigned char h_index;unsigned char t_index;unsigned char food_state;unsigned char score;unsigned char snake_state;} Snake_Data,*Snake_Data_handle;Snake_Data snk_1;#define MAP_X 64#define MAP_Y 64unsigned char game_map[MAP_Y][MAP_X];LRESULT CALLBACK Win_tetris_Proc(HWND hwnd, // handle to windowUINT uMsg, // message identifierWPARAM wParam, // first message parameter LPARAM lParam // second message parameter);int WINAPI WinMain(HINSTANCE hInstance, // handle to current instance HINSTANCE hPrevInstance, // handle to previous instance LPSTR lpCmdLine, // command lineint nCmdShow // show state){snk_1.Head_X = 0x01;//head xsnk_1.Head_Y = 0x00;//head ysnk_1.Tail_X = 0x00;//tail xsnk_1.Tail_Y = 0x00;//tail ysnk_1.h_index=0;snk_1.t_index=0;snk_1.food_state=0;snk_1.score=0;snk_1.snake_state = 1;s_count[snk_1.h_index].cnt=2;s_count[snk_1.h_index].direction=GO_RIGHT;s_count[snk_1.t_index].cnt=2;s_count[snk_1.t_index].direction=GO_RIGHT;WNDCLASS wndcls;wndcls.cbClsExtra=0;wndcls.cbWndExtra=0;wndcls.hbrBackground=(HBRUSH)GetStockObject(BLACK_BRUSH);wndcls.hCursor=LoadCursor(NULL,IDC_CROSS);wndcls.hIcon=LoadIcon(NULL,IDI_APPLICATION);wndcls.hInstance=hInstance;wndcls.lpfnWndProc=Win_tetris_Proc;wndcls.lpszClassName="Game_tetris";wndcls.lpszMenuName=NULL;wndcls.style=CS_HREDRAW | CS_VREDRAW;RegisterClass(&wndcls);//Game_TetrisHWND hwnd;hwnd=CreateWindow("Game_tetris","Game_Snake(/zook0k/)",WS _OVERLAPPEDWINDOW & ~WS_MAXIMIZEBOX & ~WS_MINIMIZEBOX & ~WS_THICKFRAME,0,0,C_W,C_H,NULL,NULL,hInstance,NULL);ShowWindow(hwnd,SW_SHOWNORMAL);//initial snakeHDC hdc;hdc=GetDC(hwnd);HBRUSH hbr;RECT rect;rect.left = 0;rect.top = 0;rect.right = 16;rect.bottom = 8;hbr= CreateSolidBrush(RGB(255,0,0));FillRect(hdc,&rect,hbr);ReleaseDC(hwnd,hdc);game_map[0][0]=1;game_map[0][1]=1;//initial randSetTimer(hwnd,1,100,NULL) ;srand((int)time(0));UpdateWindow(hwnd);MSG msg;while(GetMessage(&msg,NULL,0,0)){// TranslateMessage(&msg);DispatchMessage(&msg);}return 0;}LRESULT CALLBACK Win_tetris_Proc(HWND hwnd, // handle to windowUINT uMsg, // message identifierWPARAM wParam, // first message parameterLPARAM lParam // second message parameter){char szChar[20] = "score:";unsigned char xx,yy;switch(uMsg){case WM_KEYDOWN:{if(32 == wParam){if(1 == snk_1.snake_state){snk_1.snake_state = 0;}else{snk_1.snake_state = 1;}}if(1 == snk_1.snake_state){if((wParam > 36)&&(wParam < 41)){if(38 == wParam){if((s_count[snk_1.h_index].direction == GO_RIGHT)||(s_count[snk_1.h_index].direction == GO_LEFT)){snk_1.h_index = (snk_1.h_index+1)%SNAKE_NUMBER ;s_count[snk_1.h_index].direction = GO_UP;s_count[snk_1.h_index].cnt = 1;}}else if(40 == wParam){if((s_count[snk_1.h_index].direction == GO_RIGHT)||(s_count[snk_1.h_index].direction == GO_LEFT)){snk_1.h_index = (snk_1.h_index+1)%SNAKE_NUMBER ;s_count[snk_1.h_index].direction = GO_DOWN;s_count[snk_1.h_index].cnt = 1;}}else if(39 == wParam){if((s_count[snk_1.h_index].direction == GO_DOWN)||(s_count[snk_1.h_index].direction == GO_UP)){snk_1.h_index = (snk_1.h_index+1)%SNAKE_NUMBER ;s_count[snk_1.h_index].direction = GO_RIGHT;s_count[snk_1.h_index].cnt = 1;}}else if(37 == wParam){if((s_count[snk_1.h_index].direction == GO_DOWN)||(s_count[snk_1.h_index].direction == GO_UP)){snk_1.h_index = (snk_1.h_index+1)%SNAKE_NUMBER ;s_count[snk_1.h_index].direction = GO_LEFT;s_count[snk_1.h_index].cnt = 1;}}}}break;}case WM_TIMER://case WM_PAINT:time_t t;HDC hdc;hdc=GetDC(hwnd);HBRUSH hbr;RECT rect;if(1 == snk_1.snake_state){//headCHECK:switch(s_count[snk_1.h_index].direction){case GO_RIGHT:{if(snk_1.Head_X < 63)snk_1.Head_X++;else snk_1.Head_X = 0;break;}case GO_LEFT:{if(snk_1.Head_X >0 )snk_1.Head_X--;else snk_1.Head_X = 63;break;}case GO_DOWN :{if(snk_1.Head_Y < 63)snk_1.Head_Y++;else snk_1.Head_Y = 0;break;}case GO_UP:{if(snk_1.Head_Y > 0)snk_1.Head_Y--;else snk_1.Head_Y = 63;break;}default:{break;}}s_count[snk_1.h_index].cnt++;if(0 == game_map[snk_1.Head_Y][snk_1.Head_X])//no point{game_map[snk_1.Head_Y][snk_1.Head_X] = 1;}else if(1 == game_map[snk_1.Head_Y][snk_1.Head_X])//game over{KillTimer(hwnd,1);sprintf(szChar,"score:%d",snk_1.score);MessageBox(hwnd,szChar,"GAME OVER!",0);}else if(2 == game_map[snk_1.Head_Y][snk_1.Head_X])//eat food{game_map[snk_1.Head_Y][snk_1.Head_X] = 1;snk_1.food_state = 0;snk_1.score++;goto CHECK;}rect.left = snk_1.Head_X*8;rect.top = snk_1.Head_Y*8;rect.right = rect.left + 8;rect.bottom = rect.top + 8;hbr= CreateSolidBrush(RGB(255,0,0));FillRect(hdc,&rect,hbr);//show head point//tailgame_map[snk_1.Tail_Y][snk_1.Tail_X] = 0;rect.left = snk_1.Tail_X*8;rect.top = snk_1.Tail_Y*8;rect.right = rect.left + 8;rect.bottom = rect.top + 8;//hbr= CreateSolidBrush(RGB(0,100,0));hbr= CreateSolidBrush(RGB(0,0,0));//clear tail pointFillRect(hdc,&rect,hbr);switch(s_count[snk_1.t_index].direction){case GO_RIGHT:{if(snk_1.Tail_X < 63)snk_1.Tail_X++;else snk_1.Tail_X = 0;break;}case GO_LEFT:{if(snk_1.Tail_X >0 )snk_1.Tail_X--;else snk_1.Tail_X = 63;break;}case GO_DOWN :{if(snk_1.Tail_Y < 63)snk_1.Tail_Y++;else snk_1.Tail_Y = 0;break;}case GO_UP:{if(snk_1.Tail_Y > 0)snk_1.Tail_Y--;else snk_1.Tail_Y = 63;break;}default:{break;}}if(s_count[snk_1.t_index].cnt == 2){snk_1.t_index = (snk_1.t_index + 1)%SNAKE_NUMBER ;}else{s_count[snk_1.t_index].cnt--;}//output foodif(0 == snk_1.food_state){snk_1.food_state = 1;do{xx = rand()%3970%63;yy = rand()%3970/63;}while(1 == game_map[yy][xx]);game_map[yy][xx]=2;rect.left = xx*8;rect.top = yy*8;rect.right = rect.left + 8;rect.bottom = rect.top + 8;hbr= CreateSolidBrush(RGB(155,110,10));FillRect(hdc,&rect,hbr);//show foodsrand((unsigned) time(&t));}ReleaseDC(hwnd,hdc);}break;case WM_CLOSE:DestroyWindow(hwnd);break;case WM_DESTROY:PostQuitMessage(0);break;default:return DefWindowProc(hwnd,uMsg,wParam,lParam);}return 0;}。
几个简单有趣的c语言代码
几个简单有趣的c语言代码一、引言程序设计语言是计算机语言的一种,用于定义和编写计算机程序。
C语言是一种高级程序设计语言,由AT&T贝尔实验室的Dennis M. Ritchie于1972年开发。
C语言在软件开发中得到广泛应用,因其灵活性、效率和可移植性而备受开发人员的喜爱。
本篇文章将介绍几个简单有趣的C语言代码,用以展示C语言的魅力和应用。
二、Hello World1. 代码#include <stdio.h>int main() {printf("Hello, World!");return 0;}2. 解析这是C语言中最简单的程序,用于输出”Hello, World!“。
在代码中,printf函数用于打印消息到控制台,return 0表示程序正常执行结束。
编译并运行该程序,控制台将输出”Hello, World!“。
三、猜数字游戏1. 代码#include <stdio.h>#include <stdlib.h>#include <time.h>int main() {int secretNumber, guess, attempts = 0;srand(time(0));secretNumber = rand() % 100 + 1;printf("猜数字游戏开始!\n");do {printf("请输入一个猜测的数字:");scanf("%d", &guess);attempts++;if (guess > secretNumber) {printf("太大了!\n");} else if (guess < secretNumber) {printf("太小了!\n");} else {printf("恭喜你猜对了!你用了 %d 次尝试。
c语言编写小游戏系列教程之推动箱子,C_C++,自学去
设为首页收藏本站快捷导航论坛视频教程c/c++PHP 问答平台编程文章个人空间搜索QQ 群热搜:c 语言java 编程教程自学去学论坛编程语言C/C++c 语言编写小游戏系列教程之推动箱子返回列表电梯直达楼主admin 在线 |每日签到 |我的 |设置 |消息 |提醒(2) |门户管理 |管理中心 |退出积分: 9681 |用户组: 管理员请输入搜索内容帖子索删除主题|升降|置顶|直播|高亮|精华|图章|图标|关闭|移动|分类|复制|合并|分割|修复|警告|屏蔽|标签|生成文章查看: 519|回复: 1[精品文章] c语言编写小游戏系列教程之推动箱子 [复制链接]admin 790主题3975帖子9681积分管理员 发表于 201514 18:47:19 | 只看该作者 上节课:/thread1544811.html上节课中 我们已经实现了人物的移动,大家的可以发现,人物可以移动,但是却不能推动箱子,还能穿过障碍物和箱子。
这节课,我们的人物,就是解决这两个问题,推动箱子,还有障碍物检测。
在这之前不得不先说一个问题,随着程序代码越来越多,我们一个文件中代码已经很长了,这样不利于代码的阅读和维护,所以这节课我们决定将代码 按照功能来分成不同的文件,类似模块化编程,每个功能就是一个模块。
如何把代码放到多个文件呢?把代码的申明部分放到,头文件中,实现部分 放到源文件中。
消息新听众(3)坛友互动(1)我的帖子(1)积分9681IP 编辑禁止帖子清理比如,关于箱子操作的函数以及箱子的结构体定义,我们就放在 box.h 中 函数的具体功能实现就放在 box.c 中。
人物操作 就放在 person.h 和 person.c 中。
其他的也是 类似。
头文件如何写?我们看看例子,下面是 box.h 的所有内容01. #ifndef _BOX_H_02. #define _BOX_H_03.04. #include <config.h>05.06. //定义箱子结构体07. typedef struct{08. int x;09. int y;10. char flag;11. int state;12. } box_t;13.14. //设置箱子位置15. void set_box(box_t*, int x, int y);16. //移动箱子,返回0表示成功移动,返回非0表示不能移动17. int move_box(box_t*, dir_t);18. //根据地图坐标获取指定box19. box_t* get_box(int x, int y);20.21. #endif复制代码#ifndef _BOX_H_#define _BOX_H_.............#endif这段代码,作用是防止头文件被重复的包含,重复包含,这些函数就会被重复的申明,编译器将报错。
C语言代码实现简单扫雷小游戏
C语⾔代码实现简单扫雷⼩游戏⽤C语⾔写⼀个简单的扫雷,供⼤家参考,具体内容如下1.所需要的知识c语⾔的基本语法,简单的⼆维数组,⼀点简单的递归知识。
2.总体思路扫雷游戏主要由3个部分组成,埋雷⼦,扫雷,判断输赢。
扫雷游戏的主体是两个个字符类型的⼆维数组。
⼀个是mine[][]它的构成是'0'和‘1',其中'0'表⽰⽆雷,'1'表⽰有雷。
⼀个是show[][]它的构成是'*'和'数字'。
星号表⽰未开启的地⽅,数字表⽰周围的雷数。
这⾥要注意的是:mine和show的实际⼤⼩是11x11,但是展⽰的效果是 9x9。
这样做的优点将在Find()中体现。
蓝⾊部分是可见的9x9,实际的类似红⾊ 11x11。
下⾯是我⽤到的⼀些函数。
//game.h#pragma once#ifndef __GAME_H__#define __GAME_H__#include<stdio.h>#include<stdlib.h>#include<process.h>#include<string.h>#include<time.h>#define ROW 9 // 9⾏#define COL 9 // 9列#define ROWS ROW+2 //实际⾏#define COLS COL+2 //实际列#define MineNum 10 //雷⼦数量//菜单信息void menu();//执⾏菜单void test(char mine[ROWS][COLS], int row1, int col1, char show[ROWS][COLS], int row2, int col2);//游戏主体void game(char mine[ROWS][COLS], int row1, int col1, char show[ROWS][COLS], int row2, int col2);//打印雷阵void InitBoard(char arr[ROWS][COLS], int row, int col);//埋雷⼦void SetMine(char mine[ROWS][COLS], int row, int col);//找雷⼦int FindMine(char mine[ROWS][COLS], int row1, int col1, char show[ROWS][COLS], int row2, int col2);//空⽩算法void Find(char mine[ROWS][COLS], int row1, int col1, char show[ROWS][COLS], int row2, int col2,int x, int y,int exam[ROWS][COLS]);#endif//__GAME_H__下⾯是主函数内容#include"game.h"int main(){char mine[ROWS][COLS];char show[ROWS][COLS];srand ((unsigned int)time(NULL)); //⽣成随机数,⽤于随机埋雷int i = 0, j = 0;test(mine, ROWS, COLS, show, ROWS, COLS); //测试函数system("pause");return 0;}3.详细实现菜单函数void menu(){printf("******************\n");printf("******1.play *****\n");printf("******0.exit *****\n");printf("******************\n");}这个函数是⽤来打印信息的,打印⼀个简单的菜单。
