VC开发经典推箱子游戏及源代码

0 下载量 58 浏览量 更新于2024-10-27 收藏 2.08MB ZIP 举报
资源摘要信息:"推箱子游戏在C语言中的开发与实现" 推箱子游戏是一种经典的智力游戏,玩家需要通过移动箱子来达到指定的目的地。在C语言中开发推箱子游戏需要涉及到编程基础、数据结构、算法逻辑以及可能的图形界面设计等多个方面。在此次资源中,我们得到了一份经过压缩的文件包,其名称为“archive_VC开发的推箱子游戏.zip.zip”,表明这份资源是使用Visual C++(简称VC)环境进行开发的推箱子游戏项目文件。 从文件的描述来看,描述内容与标题相同,均为“archive_VC开发的推箱子游戏.zip.zip”,这可能表明资源的描述信息不完整或者存在重复,不过从文件名称可以明确,该资源包主要与C语言和游戏开发相关。 文件中的标签为“C语言 游戏”,这提示我们资源与C语言编程和游戏开发紧密相关。C语言作为编程语言,具有接近硬件、执行效率高的特点,非常适合进行游戏底层逻辑的开发。 在文件压缩包子的文件名称列表中,我们看到了两个文件:“VC开发的推箱子游戏.zip”和“output.txt”。其中,“VC开发的推箱子游戏.zip”显然是一个压缩包文件,里面应该包含了推箱子游戏的所有源代码文件、资源文件以及可能的编译生成文件。而“output.txt”很可能是一个文本文件,记录了游戏开发过程中的输出信息,例如编译时的错误信息、游戏运行时的调试信息或者其他重要的日志信息。 详细知识点: 1. C语言基础:推箱子游戏的开发首先需要对C语言有扎实的掌握,包括但不限于基本语法、数据类型、控制结构、函数、指针、数组等。 2. 数据结构:推箱子游戏涉及到数据结构的设计与实现,例如地图的存储可以使用二维数组,箱子和目标位置可以用结构体来表示,为了优化搜索过程,可能还需要使用栈或者队列来记录玩家的操作历史,以便实现撤销功能。 3. 算法逻辑:游戏的核心算法包括地图的渲染、玩家移动逻辑、箱子的推动逻辑以及游戏胜利条件的判断等。这需要编程者具备良好的算法基础,能够实现各种判断和搜索算法。 4. 图形界面设计:虽然资源标签并未明确指出图形界面,但考虑到Visual C++是微软推出的面向Windows平台的集成开发环境,游戏开发很可能包含了图形用户界面的设计。在Windows平台上,这通常涉及到使用WinAPI或者更高级的框架如MFC(Microsoft Foundation Classes)来设计。 5. 编译和调试:在开发过程中,需要不断对代码进行编译和调试以确保游戏逻辑的正确性。编译器会将C语言源代码转换成机器码,而调试则是检查程序运行过程中是否按预期工作,并修正发现的错误。 6. 文件操作:游戏可能会涉及到文件的读写操作,例如保存游戏进度、加载存档或记录玩家分数等,这需要掌握C语言的文件操作函数。 7. 游戏循环:一个完整的游戏通常包含一个游戏循环,负责不断更新游戏状态并响应用户输入。游戏循环是游戏程序的核心机制之一。 8. 界面和交互:玩家与游戏交互的界面设计,如菜单系统、得分板、地图展示等,这些都是吸引玩家并提供良好体验的重要部分。 总结以上,这份资源应该包含了完整的推箱子游戏开发项目,适合学习C语言编程和游戏开发的初学者进行实践和深入研究。通过对这些文件的分析和实现,开发者可以更好地理解游戏开发的整个流程以及相关的编程知识点。

def unzip_infer_data(src_path,target_path): ''' 解压预测数据集 ''' if(not os.path.isdir(target_path)): z = zipfile.ZipFile(src_path, 'r') z.extractall(path=target_path) z.close() def load_image(img_path): ''' 预测图片预处理 ''' img = Image.open(img_path) if img.mode != 'RGB': img = img.convert('RGB') img = img.resize((224, 224), Image.BILINEAR) img = np.array(img).astype('float32') img = img.transpose((2, 0, 1)) # HWC to CHW img = img/255 # 像素值归一化 return img infer_src_path = '/home/aistudio/data/data55032/archive_test.zip' infer_dst_path = '/home/aistudio/data/archive_test' unzip_infer_data(infer_src_path,infer_dst_path) para_state_dict = paddle.load("MyCNN") model = MyCNN() model.set_state_dict(para_state_dict) #加载模型参数 model.eval() #验证模式 #展示预测图片 infer_path='data/archive_test/alexandrite_6.jpg' img = Image.open(infer_path) plt.imshow(img) #根据数组绘制图像 plt.show() #显示图像 #对预测图片进行预处理 infer_imgs = [] infer_imgs.append(load_image(infer_path)) infer_imgs = np.array(infer_imgs) label_dic = train_parameters['label_dict'] for i in range(len(infer_imgs)): data = infer_imgs[i] dy_x_data = np.array(data).astype('float32') dy_x_data=dy_x_data[np.newaxis,:, : ,:] img = paddle.to_tensor (dy_x_data) out = model(img) lab = np.argmax(out.numpy()) #argmax():返回最大数的索引 print("第{}个样本,被预测为:{},真实标签为:{}".format(i+1,label_dic[str(lab)],infer_path.split('/')[-1].split("_")[0])) print("结束") 以上代码进行DNN预测,根据这段代码写一段续写一段利用这个模型进行宝石预测的GUI界面,其中包含预测结果是否正确的判断功能

2023-05-25 上传