C语言项目:五子棋(一)

1、创作想法:

根据线下课程,巩固所学知识,以及想着自己试着自己独立编写一个C语言程序。

(编译软件:VS_studio2022,编译语言:C语言)

2、学习框架:

        1)绘制界面:棋盘绘制、棋子绘制(这里要使用graphics.h库,要下载easyx:https://easyx.cn/ 安装教程自行在CSDN中查找)

        2)功能实现:鼠标消息的获取、根据鼠标消息,计算棋子下落的格子、

        3)判断胜负

        4)插入文字

  1. 绘制界面:
    注意,坐标绘制,从左上角开始是坐标原点,沿着竖直方向向下,越往下,y的坐标越大。
        背景绘制 : 

        贴图三部曲:
            1、定义一个IMAGE类型的变量,作为贴图的载体;

            2、使用loadimage加载图片到变量;

	//1、初始化一个500*500的图形窗口
    initgraph(500, 500);
	//2、定义并加载图片"bk.jpg"
	IMAGE img;
	// 直接调用loadimage
	loadimage(&img, "bk.jpg");

            3、使用putimage显示输出图片;

	//3、贴图,x,y就是图片显示的位置,显示的是图片的变量
	putimage(0, 0, &img);

       注意,这里在使用putimage,应该考虑背景图是否加载成功:

	// 多重检查确保安全
	if (img.getwidth() == 0 || img.getheight() == 0) {
		printf("图片加载失败或尺寸异常!\n");
		// 尝试获取错误码(如果函数存在)
		#ifdef geterror
			printf("错误码:%d\n", geterror());
		#endif
		closegraph();
		return -1;
	}

       背景图完整代码:

//1、初始化一个500*500的图形窗口
initgraph(500, 500);
//2、定义并加载图片"bk.jpg"
IMAGE img;
// 直接调用loadimage
loadimage(&img, "bk.jpg");

// 多重检查确保安全
if (img.getwidth() == 0 || img.getheight() == 0) {
	printf("图片加载失败或尺寸异常!\n");
	// 尝试获取错误码(如果函数存在)
	#ifdef geterror
		printf("错误码:%d\n", geterror());
	#endif
	closegraph();
	return -1;
}
//3、贴图,x,y就是图片显示的位置,显示的是图片的变量
putimage(0, 0, &img);
        内容绘制:

        思路:我们插入好贴图,就要开始进行具体内容的绘制,将棋盘的格子绘制,也就是横线竖线,

        1、设置线条的颜色:

//1、设置线条颜色
setlinecolor(BLACK);

        2、设置线条之间的间隔:

        这里要使用line函数来进行设置,具体参数请使用大语言模型或者CSDN及其他地方查找学习,这里就不进行过多赘述了。

        使用for循环设置它的行数和它的列数

//使用line函数划线:x1,y1点1,x2,y2点2
//这里是500/25=20列,这里的间隔设置的是25,所以棋盘格数就是20
for(int i = 0 ;i < 20; i++)
	line(i * 25, 0, i * 25, 500);//x坐标从0到n-1,y的长度为500,数目为n-1
for (int i = 0; i < 20; i++)//这里的行是20行
	line(0,i*25,500,i*25);//x的长度为500,数目为25

 呈现结果如下:

        

        3、增加一些文字提示在空白处:

              1)  在使用设置文字的函数之前,应该将贴图的背景改为透明,防止文字不显示:

	//设置背景的颜色深度为:透明
	setbkmode(0);

              2) 设置文字的颜色:

//设置文字
settextcolor(BLACK); // 设置文字颜色为黑色

             3) 设置文字的插入位置

        利用outtextxy库函数,设置插入文字的位置和文字内容:

//根据坐标插入文字 x,y就是文字显示的坐标
outtextxy(515, 60, "玩家1:黑棋");
outtextxy(515, 100, "玩家2:白棋");

总代码:

#include <graphics.h>
//注意,这里使用graphics.h文件需要.cpp后缀名
#include <stdio.h>
#include <conio.h>


void  initGame() {
	/*
	贴图三部曲:
		1、定义一个IMAGE类型的变量,作为贴图的载体;
		2、使用loadimage加载图片到变量;
		3、使用putimage显示输出图片;
	*/
	//1、初始化一个500*500的图形窗口
	initgraph(600, 500, SHOWCONSOLE);
	//2、定义并加载图片"bk.jpg"
	IMAGE img;
	// 直接调用loadimage
	loadimage(&img, "bk.jpg");

	// 多重检查确保安全
	if (img.getwidth() == 0 || img.getheight() == 0) {
		printf("图片加载失败或尺寸异常!\n");
		// 尝试获取错误码(如果函数存在)
#ifdef geterror
		printf("错误码:%d\n", geterror());
#endif
		closegraph();
		return;
	}
	//3、贴图,x,y就是图片显示的位置,显示的是图片的变量
	putimage(0, 0, &img);
	//设置线条颜色
	setlinecolor(BLACK);
	//使用line函数划线:x1,y1点1,x2,y2点2
	for (int i = 0; i <= 20; i++)
	{//这里的第列要保证密封,所以i<=20;
		line(i * 25, 0, i * 25, 500);//x坐标从0——n-1,y的长度为500,数目为20列
		line(0, i * 25, 500, i * 25);//x的长度为500,数目为25
	}
	setlinestyle(PS_SOLID, 2); // 设置线条样式为实线
	//插入文字
	//1、设置背景的颜色深度为:透明
	setbkmode(0);
	//2、设置文字颜色为黑色
	settextcolor(BLACK);
	//根据坐标插入文字 x,y就是文字显示的坐标
	outtextxy(515, 20, "玩家1:黑棋");
	outtextxy(515, 50, "玩家2:白棋");
}


int main() {
	initGame();
	
	// 使用getch()阻塞窗口关闭,不使用getchar(),是因为getch()不需要回车键
	_getch();
	closegraph(); // 关闭图形窗口,释放资源
	return 0;
}

	

       在绘制界面的过程中会调用一些在平时学习中不怎么使用的库函数,这些函数的基本用法通过查找CSDN以及一些大数据模型,了解这些函数的基本用法,根据自己的思路,将代码顺序梳理整齐。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值