开源/成品: C语言课设作业 – 北斗神拳游戏

在夏树鸽掉的这几个月时间, 也不完全是在忙课设, 大部分时间都在上网课, 花在这个课设题目的时间上还挺少。这次的小组课设游戏主题是“北斗神拳”, 开工时间大概是在上周三, 截止到周五下午七点左右吧, 虽然很简单, 但是还是在博客这边留个纪念, 我的大一生活呀。

继续阅读开源/成品: C语言课设作业 – 北斗神拳游戏

夏树的C语言篇 – 获取Bmp位图的宽高

0.写在前面

最近才开始研究C语言控制台贴图的内容(同学格斗游戏都快做完啦?!), 之前做课设的时候一直感觉模模糊糊的. 然后想自己封装一套用来贴图的库, 类似于EasyX? 然后就遇到了需要获取Bmp位图宽高的问题, 搜了下发现讨论区提到使用GetObject或者GetBitmapDimensionEx可以实现, 但是在实际使用过程中还是存在一定的区别的。

继续阅读夏树的C语言篇 – 获取Bmp位图的宽高

夏树的C语言篇 – 简易Kmeans类聚算法实现对点集的分组

0.写在前面

夏树大一上学期为时一周的C语言课设就在昨天周五结束了。其中印象比较深刻的就是课设中有一题运用Kmeans算法对点集实现分组的题目啦(顺便自己试着摸了下GDI的一些函数),然后今天抽出些时间来整理一下,先上最后实现的结果:

kmeans-best-grouping_1.jpg

kmeans-best-grouping_2.jpg

1.问题描述

随机生成一组位于二维坐标系的点集(15<=点集元素个数N<=65),这些点不重合,每个点的位置由x,y值决定,x,y为整数且0<x<80,0<y<40。现在想知道这些点按距离远近该分成几个组合适,已知分组值K备选范围从1-10,输入K值,请你按以下方法画出分组结果:

  • (1) 从N个数据点中随机挑选K个不同点作为K个组的初始中心起点(组中心);
  • (2) 计算所有点到K个组中心的距离(欧式距离),并把它归到距离最近的组(如果有多个组距离一样,随便选一个归入);
  • (3) 更新K个组的中心值(求出该组所有点的x平均值和y平均值,作为新的组中心);
  • (4) 重复(2)~(3)步直至新的组中心和原来的组中心差值小于指定阈值(人为设置),或超出最大重复次数(人为设置),算法结束;
  • (5) 在控制台画出K组分组结果,每组用不同数字表示,使用0,1,2,3….9分别表示10个组。

继续阅读夏树的C语言篇 – 简易Kmeans类聚算法实现对点集的分组