精华内容
下载资源
问答
  • C语言推箱子分析

    千次阅读 2018-08-08 13:19:04
    推箱子的地图,怎么搞? 用一个二维数组来表示整个地图,我们先网上找一张地图来分析下。 分析:地图上有 墙、目的地、箱子、人、背景墙、目的地和箱子合起来的(红箱子) 我们用数字来在二维数组中对应的标记...

    EasyX图形库:https://www.easyx.cn/

    直接在那个黑框框打一些正方形圆形之类的也可以~

    Windows,VS2017

     

    先来捋一捋思路:

    推箱子的地图,怎么搞?

    用一个二维数组来表示整个地图,我们先网上找一张地图来分析下。

    分析:地图上有  墙、目的地、箱子、人、背景墙、目的地和箱子合起来的(红箱子)

    我们用数字来在二维数组中对应的标记这些东西,二维数组的大小就是地图的大小咯。

    //定义地图大小 8*8
    int Map[8][8]
    {
    	0,0,1,1,1,0,0,0,
    	0,0,1,3,1,0,0,0,
    	0,0,1,0,1,1,1,1,
    	1,1,1,4,0,4,3,1,
    	1,3,0,4,5,1,1,1,
    	1,1,1,1,4,1,0,0,
    	0,0,0,1,3,1,0,0,
    	0,0,0,1,1,1,0,0
    };

    然后干啥?

    哈哈哈,当然是初始化这个地图咯,就是往这个二维数组对应的位置上贴图。

    EasyX图形库自带了使用文档,大家可以看一看文档里面各种函数的使用说明。

    初始化地图:1.加载图片 2.打印图片

    //加载图片
    void GameInit()
    {
    	loadimage(&BackGroundImage, "./loop/背景.jpg");
    	loadimage(&Wall, "./loop/wall.jpg");
    	loadimage(&Destination1, "./loop/mbb.jpg");
    	loadimage(&People1, "./loop/ren.jpg");
    	loadimage(&Box1, "./loop/zd.jpg");
    	loadimage(&Box2, "./loop/zd副本.jpg");
    	loadimage(&Boom1, "./loop/boom.jpg");
    	loadimage(&Boom2, "./loop/boom副本.jpg");
    }
    
    //打印图片
    void GamePaint()
    {
    	putimage(0, 0, &BackGroundImage);
    	for (int i = 0; i < 8; i++)
    	{
    		for (int j = 0; j < 8; j++)
    		{
    			switch (Map[j][i])
    			{
    			case 1:
    				putimage(i * 45, j * 45, &Wall);
    				break;
    			case 3:
    				putimage(i * 45, j * 45, &Destination1);
    				break;
    			case 5:
    				putimage(i * 45, j * 45, &People1);
    				break;
    			case 4:
    				putimage(i * 45, j * 45, &Box2, SRCPAINT);//这里是透明背景什么的,不解释了,大家可以百度看一看。
    				putimage(i * 45, j * 45, &Box1, SRCAND);
    				break;
    			case 7:
    				putimage(i * 45, j * 45, &Boom2, SRCPAINT);
    				putimage(i * 45, j * 45, &Boom1, SRCAND);
    				break;
    			case 8:
    				putimage(i * 45, j * 45, &People1);
    				break;
    			}
    		}
    	}
    }

     这里!我们就完成了地图的初始化!

     

     

    下来我们来解决游戏的控制和判定部分。

    我们想用上下左右键控制人物的移动,那么就得先找到人物在哪个地方。当然,我们在初始化地图的时候就已经知道了人物在哪个位置,但是如果我们重新弄一张地图初始化,我们还得来这里修改这里的代码,所以我们就让程序自己找那个人物吧。对于墙,如果人物的一面是墙,按下对应的方向键就会不作为,如果是箱子,那就判断箱子的那个方向是不是墙……等等。

    //游戏控制
    void GamePlay()
    {
    	char ch;
    	int x, y;
    	BeginBatchDraw();//开启批量绘图,这样就让游戏显示的快一些,不然会有卡顿。
    	while (1)
    	{
    		if (!GameWin())//这里的游戏判定后面说
    		{
    			GamePaint();
    			FlushBatchDraw();
    			//MessageBox(GetHWnd(), "YOU WIN", "GO", MB_OK);
    			break;
    		}
    		cleardevice();
    		GamePaint();
    		FlushBatchDraw();
    		//找到人物的位置
    		for (x = 0; x < 8; x++)
    		{
    			for (y = 0; y < 8; y++)
    			{
    				if (Map[x][y] == 5 || Map[x][y] == 8)
    				{
    					break;
    				}
    			}
    			if (Map[x][y] == 5 || Map[x][y] == 8)
    			{
    				break;
    			}
    			//for循环结束后 Map[x][y]就是小鸟的位置
    		}
    		ch = getch();
    		switch (ch)
    		{
    		case 72:
    		case'W':
    		case'w':
    			if (Map[x - 1][y] == 0 || Map[x - 1][y] == 3)
    			{
    				Map[x][y] = Map[x][y] - 5;
    				Map[x - 1][y] = Map[x - 1][y] + 5;
    			}
    			else if (Map[x - 1][y] == 4 || Map[x - 1][y] == 7)
    			{
    				if (Map[x - 2][y] == 0 || Map[x - 2][y] == 3)
    				{
    					Map[x - 2][y] += 4;
    					Map[x - 1][y] += 1;
    					Map[x][y] -= 5;
    				}
    			}
    			break;
    		case 80:
    		case 's':
    		case 'S':
    			if (Map[x + 1][y] == 0 || Map[x + 1][y] == 3)
    			{
    				Map[x][y] -=5;
    				Map[x + 1][y] += 5;
    			}
    			else if (Map[x + 1][y] == 4 || Map[x + 1][y] == 7)
    			{
    				if (Map[x + 2][y] == 0 || Map[x + 2][y] == 3)
    				{
    					Map[x + 2][y] += 4;
    					Map[x + 1][y] += 1;
    					Map[x][y] -= 5;
    				}
    			}
    			break;
    		case 75:
    		case 'A':
    		case 'a':
    			if (Map[x][y - 1] == 0 || Map[x][y - 1] == 3)
    			{
    				Map[x][y - 1] += 5;
    				Map[x][y] -= 5;
    			}
    			else if (Map[x][y - 1] == 4 || Map[x][y - 1] == 7)
    			{
    				if (Map[x][y - 2] == 0 || Map[x][y - 2] == 3)
    				{
    					Map[x][y - 2] += 4;
    					Map[x][y - 1] += 1;
    					Map[x][y] -= 5;
    				}
    			}
    			break;
    		case 77:
    		case 'D':
    		case 'd':
    			if (Map[x][y + 1] == 0 || Map[x][y + 1] == 3)
    			{
    				Map[x][y + 1] += 5;
    				Map[x][y] -= 5;
    			}
    			else if (Map[x][y + 1] == 4 || Map[x][y + 1] == 7)
    			{
    				if (Map[x][y + 2] == 0 || Map[x][y + 2] == 3)
    				{
    					Map[x][y + 2] += 4;
    					Map[x][y + 1] += 1;
    					Map[x][y] -= 5;
    				}
    			}
    			break;
    		}
    	}
    	EndBatchDraw();//关闭批量绘图
    	MessageBox(GetHWnd(), "YOU WIN", "OK,GO ON!", MB_OK);
    }

     

     

    游戏win判定:

    判定很好办,我们只要遍历地图,只要是所有的箱子和所有的目的地重合了,就赢了。

    //游戏判定
    int GameWin()
    {
    	for (int i = 0; i < 8; i++)
    	{
    		for (int j = 0; j < 8; j++)
    		{
    			if (Map[i][j] == 4)
    			{
    				winner4++;
    			}
    			if (Map[i][j] == 7)
    			{
    				winner7++;
    			}
    		}
    	}
    	if (winner4 == winner7)
    	{
    		return 0;
    	}
    	else
    	{
    		return 1;
    	}
    }

     

    main、main、main!

    //主函数
    int main()
    {
    	initgraph(360, 360);//初始化窗口大小360*360
    	GameInit();//初始化地图
    	GamePaint();//绘制地图
    	GamePlay();//玩~
        return 0;
    }

     

     

     

    展开全文
  • 推箱子的最短路径-数据结构与C语言综合训练报告信息工程学院数据结构与C语言综合训练报告(2012~2013学年第 二学期)报告题目:____推箱子的最短路径_ __姓 名:_ __ ____专 业: 软件工程年级班级:___2012级2班___...

    推箱子的最短路径-数据结构与C语言综合训练报告

    信息工程学院

    数据结构与C语言综合训练报告

    (2012~2013学年第 二学期)

    报告题目:____推箱子的最短路径_ __

    姓 名:_ __ ____

    专 业: 软件工程

    年级班级:___2012级2班___

    指导教师:

    完成日期: 2013年7月21号

    一、综合训练目的和要求

    本综合训练是计算机科学与技术、信息管理与信息系统、软件工程、电子商务专业重要的实践性环节之一,是在学生学习完《程序设计语言(C)》、《数据结构》课程后进行的一次全面的综合练习。本课综合训练的目的和任务:

    1. 巩固和加深学生对C语言、数据结构课程的基本知识的理解和掌握

    2. 掌握C语言编程和程序调试的基本技能

    3. 利用C语言进行基本的软件设计

    4. 掌握书写程序设计说明文档的能力

    5. 提高运用C语言、数据结构解决实际问题的能力

    二、综合训练任务内容

    1.题目要求:

    推箱子是一个很经典的游戏.今天我们来玩一个简单版本.在一个的房间里有一个箱子和一个搬运工,搬运工的工作就是把箱子推到指定的位置,注意,搬运工只能推箱子而不能拉箱子,因此如果箱子被推到一个角上那么箱子就不能再被移动了,如果箱子被推到一面墙上,那么箱子只能沿着墙移动.现在给定房间的结构,箱子的位置,搬运工的位置和箱子要被推去的位置,请你计算出搬运工至少要推动箱子多少格.

    四、详细设计说明

    1、推箱子游戏具有的功能

    (1)能够显示主菜单和界面

    游戏需要提供主菜单进行选择,同时能够把地图文件中的信息转换成为图像显示到游戏界面上。

    (2)能够实现键盘操作功能

    能够接收到空格键信息,按照软件内部实现的箱子移动到相应的位置。

    能够进行关卡选择功能

    进入开始游戏的界面时,可以进行游戏的关卡的选择,然后利用空格键进行箱子的移动。

    提供游戏说明功能

    进入游戏说明界面时,可以了解游戏的一些规则,及如何进行游戏。

    程序结构设计

    运用C++语言,以及VS2010开发环境

    (1)、typedef struct Pnode{

    int row;

    int col;

    int weight;

    struct Pnode* back_man;

    }Pnode, * Position;

    某一点的坐标表示,当用来实现箱子的最短路径的搜索时,back_man 用来存储箱子移动一个位置后,人所在的位置。

    (2)、typedef struct Mnode{

    int mrow;

    int mcol;

    char maze[MAX_ROW][MAX_COL];

    }MNode, *MazeType;

    用来存储地图的信息

    、算法的实现

    主要有两个类,第一个类是class ShortestPath ;

    第二个类是class ManBoxStep: public ShortestPath ;

    A、第一个类class ShortestPath 是用来实现地图中任意两点之间的最短路径,成员函数及其功能如下:

    Position NextPosition(Position &curpos, int di);

    用来计算当前点在四个方向下的移动一格得到的下一点的坐标位置,并返回;

    bool CanArrive( vector< list > &vec);

    数据成员有start,end,此函数是判断在地图中能否从 start 到 end ,并利用广度优先搜索搜索从start 到end 的路径,并把所有搜索过的位置全部记录在顺序容器 vec 中,vec[i] 表示存储一系列与start 位置相距i 个格子的被搜索的点的位置;

    void RecordWay( vector< list > &vec, vector &way);

    此函数根据 vec 中所存储的数据,利用回溯法进行往回搜索,找到从 start 到 end 的最短路径, 并把路径存到容器 way 中;

    B、第二个类class ManBoxStep 是利用第一个类中的函数实现人和箱子一起从起点到箱子应到的位置的最短路径,其中的成员函数及其功能如下:

    Position NextState(Position box, int di);

    此函数的功能是纪录当人能够移动箱子的情况下,纪录移动后箱子和人的位置;

    MazeType UpdateMaze(MazeType mymaze, Position curpos, Position newpos);

    此函数的功能是每当在搜索下一步时,及时的更新所在的地图(即改变人和箱子的位置),并每次都将地图纪录下来;

    bool BFSCanArrive( vec

    展开全文
  • 推箱子实验报告

    2017-09-25 10:06:00
    游戏编程 推箱子 MFC代码 实验报告 针对游戏编成这门课程 自己设计推箱子的小游戏 并且总结设计中的实验步骤以及遇到的问题 。
  • C语言课程设计,推箱子题目。绝对能用。包括60关的地图 精心调试无错误。 附带课程设计报告
  • C语言编写的推箱子小游戏

    千次阅读 多人点赞 2019-06-17 18:28:26
    具体内容分为实验报告和程序具体代码。 程序设计基础 ——期末大作业报告 实验设计 1.编写推箱子小游戏 2.使用C语言 3.使用Dev C++编程程序 4.实现小人移动判定 5.实现通关判定 实验分析 1.首先了解...

    大一时候的期末大作业,一直没找到,在桌子缝里找到了优盘,现在才把内容放上来,希望能帮到你们。具体内容分为实验报告和程序具体代码。

     

    程序设计基础

    ——期末大作业报告

     

    实验设计

    1.编写推箱子小游戏

    2.使用C语言

    3.使用Dev C++编程程序

    4.实现小人移动判定

    5.实现通关判定

     

    实验分析

    1.首先了解推箱子游戏的规则

    2.使用代码完成基本的功能

    3.判断移动是否正确

    4.实现关卡之间的连接

    5.判断游戏是否结束

    6.尽量保证推箱子游戏的操作完整性

     

     

     

    实现难点及解决方案

    一、小人移动的判定

    1. 该方向第一个方格为边界;

    2. 该方向第一个方格是箱子,第二个方格是边界;

    3.该方向第一个方格是箱子,第二个方格是放好位置的箱子;

    4. 该方向第一个方格是箱子,第二个方格是箱子。

    以上为小人无法移动的条件。

    解决方案:

    1. 人物移动时判断人物当前位置是空地还是目的地

    2. 人物的移动的方向的前方是空地时可直接交换,

    3. 人物的移动的方向的前方是箱子时需要再分几种情形

    a. 箱子的前方是墙或箱子则无动作

    b. 箱子的前方是空地则三者互换

    c. 箱子的前方是目的地时则移动

     

     

     

    二、地图的制作

    1. 使用二维数组

    2. 对游戏中的不同类型物体编号

    3. 输出时根据数字不同输出不同形状:

    1——墙

    2——箱子

    3——人物

    4——目的地

     

     

    部分代码如下:

    (完整代码联系博主)

    #include<stdio.h>  
    #include<stdlib.h>   
    #include<string.h>   
    #include<conio.h> 
    int i=0; 
    int map_1[8][8]={
         {0,0,0,0,0,0,0,0},
         {0,1,1,1,1,1,1,0},
         {0,1,4,0,0,0,1,0},
         {0,1,0,2,0,0,1,0},
         {0,1,0,0,3,0,1,0},
         {0,1,0,0,0,0,1,0},
         {0,1,1,1,1,1,1,0},
         {0,0,0,0,0,0,0,0}
     }; 
    int map_2[8][8]={
         {0,0,0,0,0,0,0,0},
         {0,0,0,0,1,1,1,0},
         {0,0,0,0,1,4,1,0},
         {0,0,0,0,1,0,1,0},
         {0,1,1,1,1,2,1,0},
         {0,1,3,0,0,0,1,0},
         {0,1,1,1,1,1,1,0},
         {0,0,0,0,0,0,0,0}
     }; 
     int map_3[8][8]={
         {0,0,1,1,1,0,0,0},
         {0,0,1,4,1,0,0,0},
         {0,0,1,2,1,1,1,1},
         {1,1,1,0,0,2,4,1},
         {1,4,0,2,3,1,1,1},
         {1,1,1,1,2,1,0,0},
         {0,0,0,1,4,1,0,0},
         {0,0,0,1,1,1,0,0}
     }; 
     int map_4[8][8]={
         {1,1,1,1,1,1,1,1},
         {1,0,0,4,0,0,0,1},
         {1,0,0,2,0,0,0,1},
         {1,0,0,0,0,2,4,1},
         {1,4,2,0,3,0,0,1},
         {1,0,0,0,2,0,0,1},
         {1,0,0,0,4,0,0,1},
         {1,1,1,1,1,1,1,1}};
     int map_5[8][8]={
         {1,1,1,1,1,1,1,1},
         {1,0,0,0,0,0,0,1},
         {1,1,0,0,0,0,0,1},
         {1,0,4,1,1,2,0,1},
         {1,0,0,1,3,0,0,1},
         {1,0,0,1,0,0,0,1},
         {1,0,0,1,0,0,0,1},
         {1,1,1,1,1,1,1,1}};
    int map_6[8][8]={
         {1,1,1,1,1,1,1,1},
         {1,0,0,0,0,0,0,1},
         {1,0,0,4,0,4,0,1},
         {1,0,0,2,0,2,0,1},
         {1,0,0,0,3,0,0,1},
         {1,0,0,2,0,2,0,1},
         {1,0,0,4,0,4,0,1},
         {1,1,1,1,1,1,1,1}}; 
    int map_7[8][8]={
         {1,1,1,1,1,1,1,1},
         {1,4,4,4,1,1,1,1},
         {1,0,2,0,1,1,1,1},
         {1,0,3,0,1,1,1,1},
         {1,0,2,2,0,1,1,1},
         {1,0,0,0,1,1,1,1},
         {1,0,0,1,1,1,1,1},
         {1,1,1,1,1,1,1,1}};
    int map_8[8][8]={
         {1,1,1,1,1,1,1,1},
         {1,0,0,0,1,1,1,1},
         {1,4,0,2,1,1,1,1},
         {1,4,0,3,0,0,1,1},
         {1,1,2,0,1,0,1,1},
         {1,1,0,0,0,0,1,1},
         {1,1,1,1,1,1,1,1},};
    int map_9[8][8]={
         {1,1,1,1,1,1,1,0},
         {1,0,0,4,2,0,1,0},
         {1,0,1,0,0,0,1,0},
         {1,0,1,0,1,0,1,0},
         {1,0,0,3,1,0,1,0},
         {1,4,2,0,0,0,1,0},
         {1,0,1,1,1,1,1,0},
    	 {1,1,1,0,0,0,0,0},};
    int map_10[8][8]={
         {0,1,1,1,1,1,0,0},
         {0,1,0,0,1,1,1,0},
         {0,1,0,0,0,0,1,0},
         {1,1,1,3,1,0,1,1},
         {1,4,0,2,0,0,0,1},
         {1,4,2,0,0,1,0,1},
         {1,4,0,0,0,2,0,1},
    	 {1,1,1,1,1,1,1,1},};	     
     int x, y;
    int map[8][8] = {0};
    int shuchu()
     {
         for(x=0; x<8; x++)
         {
             for(y=0; y<8; y++)
             {
                 if(map[x][y] == 1)
                     printf("X "); 
                 if(map[x][y] == 3)
                     printf("P "); 
                 if(map[x][y] == 2)
                     printf("Q "); 
                 if(map[x][y] == 4)
                     printf("B ");  
                 if(map[x][y] == 0)
                     printf("  "); 
                 if(map[x][y] == 5) 
                     printf("V "); 
                     if(map[x][y] == 6) 
                     printf("M "); 
                     
             }
             printf("\n");
         }
         return 0;
     }
     int zhujiemian()
     {
         printf("                           \n"
         		"                           \n"
         		"                           \n"
         		"                           \n"
         		"                           \n"
         		"                           \n"
         		"                           \n"
    			"                           \n" 
         		"                           \n"
         		"                           \n"
                "                          welcome!     \n"
                "                           \n"
                "                           \n"
                "                           R : replay              \n"
                "                           WSAD : move    \n"
                "                                   \n"
                "                             \n");
                }
                
     int find()
     {
         for(x=0; x<8; x++)
             for(y=0; y<8; y++)
             {
                 if(map[x][y] == 3||map[x][y] == 6)
                     return 0;
             }
             return 0;
     }
    
     int count1()
     {
         int n=0;
         for(x=0; x<8; x++)
             for(y=0; y<8; y++)
             {
                 if(map[x][y] == 4)
                     n++;
             }
        return n;
     }
    
     int count2()
     {
         int m=0;
         for(x=0; x<8; x++)
             for(y=0; y<8; y++)
             {
                 if(map[x][y] == 5)
                     m++;
             }
             return m;
     }
     
     int up()
     {
         if(map[x][y] == 3) 
         {
             if(map[x-1][y] == 0) 
             {
                 map[x-1][y] = 3;
                 map[x][y] = 0;
             }
             if(map[x-1][y] == 2 && map[x-2][y] == 4) 
             {
                 map[x][y] = 0;
                 map[x-1][y] = 3;
                 map[x-2][y] = 5;
             }
             if(map[x-2][y] == 0 && map[x-1][y] == 2) 
            {
                map[x][y] = 0;
                map[x-1][y] = 3;
                map[x-2][y] = 2;
            }
             else if(map[x-1][y] == 4){
             	 map[x][y] =0;
    			  map[x-1][y] = 6; 
    		 }
         }
         else if(map[x][y] == 6){
         	 if(map[x-1][y] == 0) 
             {
                 map[x-1][y] = 3;
                 map[x][y] = 4;
             }
             if(map[x-1][y] == 2 && map[x-2][y] == 4) 
             {
                 map[x][y] = 4;
                 map[x-1][y] = 3;
                 map[x-2][y] = 5;
             }
             if(map[x-2][y] == 0 && map[x-1][y] == 2) 
            {
                map[x][y] = 4;
                map[x-1][y] = 3;
                map[x-2][y] = 2;
            }
             else if(map[x-1][y] == 4){
             	 map[x][y] =4;
    			  map[x-1][y] = 6; 
    		 }
    	 }
         return 0;
     }
     
     int down()
     {
         if(map[x][y] == 3)             
         {
             if(map[x+1][y] == 0)      
             {
                map[x+1][y] = 3;
                map[x][y] = 0;
             }
             if(map[x+1][y] == 2 && map[x+2][y] == 4)  
             {
                 map[x][y] = 0;
                 map[x+1][y] = 3;
                 map[x+2][y] = 5;
             }
             if(map[x+2][y] == 0 && map[x+1][y] == 2) 
            {
                map[x][y] = 0;
                map[x+1][y] = 3;
                map[x+2][y] = 2;
            }
             else if(map[x+1][y] == 4){
             	 map[x][y] =0;
    			  map[x+1][y] = 6; 
    		 }
             
         }
            else if(map[x][y] == 6){
         	  if(map[x+1][y] == 0)       
             {
                map[x+1][y] = 3;
                map[x][y] = 4;
             }
             if(map[x+1][y] == 2 && map[x+2][y] == 4)  
             {
                 map[x][y] = 4;
                 map[x+1][y] = 3;
                 map[x+2][y] = 5;
             }
             if(map[x+2][y] == 0 && map[x+1][y] == 2) 
            {
                map[x][y] = 4;
                map[x+1][y] = 3;
                map[x+2][y] = 2;
            }
             else if(map[x+1][y] == 4){
             	 map[x][y] =4;
    			  map[x+1][y] = 6; 
    		 }
             
    	 }
         return 0;
     }
     
     

     

     

     

     

    展开全文
  • C语言课程设计-推箱子游戏毕业论文2PAGE xx 工 业 大 学 课 程 设 计 说 明 书(论 文)X x 工 业 大 学《C++语言程序设计》课程设计(论文)题目: 推 箱 子 院(系): 软 件 学 院 专业班级: 软件工程103班 学 号: ...

    C语言课程设计-推箱子游戏毕业论文2

    PAGE xx 工 业 大 学 课 程 设 计 说 明 书(论 文)X x 工 业 大 学《C++语言程序设计》课程设计(论文)题目: 推 箱 子 院(系): 软 件 学 院 专业班级: 软件工程103班 学 号: 学生姓名: 指导教师: 教师职称: 讲 师 起止时间:2012.12.20-2012.12.31课程设计(论文)任务及评语院(系):软件学院 教研室:软件教研室学 号 学生姓名 专业班级软件工程103课程设计(论文)题目推 箱 子课程设计(论文)任务掌握面向对象程序设计语言C++的基本语法掌握C++面向对象设计的思想掌握VC++6.0与DEV C++ 开发工具的使用(4).运用标准C++规范设计应用程序设计过程中,要严格遵守设计的时间安排,听从指导教师的指导。正确地完成上述内容,规范完整地撰写出设计报告。指导教师评语及成绩成绩: 指导教师签字: 年 月 日xx 工 业 大 学 课 程 设 计 说 明 书(论 文)PAGE 1目 录 TOC \o "1-3" \h \z HYPERLINK \l "_Toc247714546" 第1章 课程设计目的与要求 PAGEREF _Toc247714546 \h 1 HYPERLINK \l "_Toc247714547" 1.1 课程设计目的 PAGEREF _Toc247714547 \h 1 HYPERLINK \l "_Toc247714548" 1.2 课程设计的实验环境 PAGEREF _Toc247714548 \h 1 HYPERLINK \l "_Toc247714549" 1.3 课程设计的预备知识 PAGEREF _Toc247714549 \h 1 HYPERLINK \l "_Toc247714550" 1.4 课程设计要求 PAGEREF _Toc247714550 \h 1 HYPERLINK \l "_Toc247714551" 第2章 课程设计内容 PAGEREF _Toc247714551 \h 2 HYPERLINK \l "_Toc247714552" 2.1 C++语言程序设计《推箱子》问题分析 PAGEREF _Toc247714552 \h 2 HYPERLINK \l "_Toc247714553" 2.1.1 功能分析 PAGEREF _Toc247714553 \h 2 HYPERLINK \l "_Toc247714554" 2.1.2 算法设计及程序设计中技术重点 PAGEREF _Toc247714554 \h 2 HYPERLINK \l "_Toc247714555" 2.2 程序中涉及的类的UML类图和主要函数流程图或框图。 PAGEREF _Toc247714555 \h 5 HYPERLINK \l "_Toc247714556" 2.3 程序源代码 PAGEREF _Toc247714556 \h 7 HYPERLINK \l "_Toc247714557" 2.4 程序的实现 PAGEREF _Toc247714557 \h 10 HYPERLINK \l "_Toc247714558" 第3章 课程设计总结 PAGEREF _Toc247714558 \h 13 HYPERLINK \l "_Toc247714559" 参考文献 PAGEREF _Toc247714559 \h 14第1章 课程设计目的与要求1.1 课程设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程《C++语言教程》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。 (2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。 (3)利用所学知识,开发小型应用系统,掌握运用C++语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。(4)对于给定的设计题目,如何进行

    展开全文
  • 我做了一个推箱子的小游戏,用了大概600多行的代码。这个小游戏采用的是Visual Studio2015做的开始,基于win32的C++语言。 大一的时候只学过C语言,老师说的是不用怕,C++和C语言差不多的,我信了他的话,然后打开...
  • C语言PBL程序.docx

    2021-03-03 10:14:08
    C语言上学期期末答辩设计了三款游戏贪吃蛇、推箱子、小鸟飞飞,并使用windows设计了其窗口,一直想将讲解代码发表在CSDN博客,写了一半却因为一些事情耽搁,这里先将项目文件上传在这,请实时关注我的博客,将在不久...
  • C语言编写多重循环程序(大于3重),查看其反汇编代码,分析各条语句功能(分析情况需要写入实验报告),并采用汇编语言重写相同功能程序。 二、实验过程 2.1 查看反汇编代码 首先,我们使用C++编写四重循环代码,每重...
  • android安卓源码海量项目合集打包-1

    万次阅读 多人点赞 2019-06-11 16:16:24
    下载地址 最后更新共计113个分类5177套源码29.2 GB。 卷 新加卷 的文件夹 PATH 列表 卷序列号为 00000200 5E7A:7F30 F:. ├─前台界面 │ ├─3D标签云卡片热门 │ │ Android TagCloudView云标签的灵活运用.rar ...
  • 不过说是高大上的卫星软件开发,其实刚开始就是打杂,给实验室、厂房推箱子搬设备,呵呵,说航天是个体力活相信很多航天人都有同感吧。不过当时年轻,心思很单纯,每天搬完设备,晚上主动加班,看文档材料,画软件...
  • 《疯狂的程序员》五

    万次阅读 2012-10-25 20:46:01
    41 绝影想了想,还是摇了摇头,这反而让周总更加充满了疑惑。   日子一天一天过去,DAP的进展是越发困难,周总和绝影对这个CASE彼此都是心照不宣。直到有一天,周总极其神秘地把绝影叫进办公室,说:“明天,...
  • — L02V Java推箱子 — AMnW Java聊天室 — 15T5 — — — — — — 02 C/C++实验报告 通讯录管理系统(C语言版) — 3S5d 学生成绩管理系统——C语言 — LQ75 人事管理系统 — v8l0 电影俱乐部管理系统 — 2ytO 机房...
  • 7.5 《丰田模式》阅读笔记和感悟

    千次阅读 2020-08-07 22:17:42
    AT&T公司曾经是美国历史上最著名的电信公司,其名下的贝尔实验室更是威名远播,我每日在用的c语言就是贝尔实验室发明的,除此之外还有unix操作系统、晶体管、激光器、太阳能电池、二极管、交换机、通讯卫星等数不清...
  • 完全用linux工作

    2011-04-03 16:25:00
    但是,川大的第一节C语言课,DS就跟我们推荐了他的那篇退学申请。模糊记得DS对他的评价不好也不差。去他的贴吧也看过很激进的责骂他的帖子。不过,对我而言,我只记得他对网上介绍他喜欢吃 番茄蛋汤 的小
  • 完全用 GNU/Linux 工作

    千次阅读 2006-08-25 15:18:00
    我认识的 MIT,Stanford 的教授,贝尔实验室的专家,甚至一个欧洲小国 的高中计算机老师都绝口不提微软的名字。在他们眼里,微软只是一个没有真技术,专 靠在落后国家商业宣传和垄断经营的小公司。这个“小”并不...
  • 易语言介绍

    2018-08-05 21:00:10
    如果说易模块相当于C语言里面的lib文件,则易包就相当于dll文件,也就是说,易模块是在易程序之间建立静态共享,而易包是建立动态共享,避免以前易模块修改后需要重新编译所有使用了它的易程序的问题. 普通的易语言程序...
  • 疯狂的程序员 41-50

    千次阅读 2019-06-18 10:33:54
    (41) 网吧 绝影想了想,还是摇了摇头,这反而让周总更加充满了疑惑。 日子一天一天过去,DAP的进展是越发困难,周总和绝影对这个CASE彼此都是心照不宣。直到有一天,周总极其神秘地把绝影叫进办公室,说:“明天,...
  • 我上次和王益合作写了一个算法演示程序,那个算法是贝尔实验室一位科学家Steven Fortune很天才的发明,为了程序能够被身边大多数人使用,我们选择了VC+MFC作为平台。我在分析算法时还得到Fortune很热情的鼓励,寄给...
  • 转载:...23 岁那年你正处在哪个状态?现在呢?&amp;nbsp; 我,23岁,应届毕业生。生活,工作,爱情都处于人生的低谷,一穷二白,一无所有,一事无成。 分享一下成长的建议吧。...23岁那年...
  • 23岁的一无所有,其实是理所应当的

    万次阅读 2018-03-05 16:37:08
    23 岁那年你正处在哪个状态?现在呢? 我,23岁,应届毕业生。生活,工作,爱情都处于人生的低谷,一穷二白,一无所有,一事无成。 分享一下成长的建议吧。匿名用户23岁那年...就是去年...... 在22岁的时候我毕业...
  • 如果你也23岁

    万次阅读 多人点赞 2014-10-15 14:01:21
    分享一下这篇文章: 23 岁那年你正处在哪个状态?现在呢?  我,23岁,应届毕业生。生活,工作,爱情都处于人生的低谷,一穷二白,一无所有,一事无成。 分享一下成长的建议吧。 ...23岁那年......
  • Thinking In C++中文版

    千次阅读 2011-05-17 07:11:00
    最初的目的),而且还为了解决当今程序员,特别是那些在 C语言中已经大量投资的程序员所 面临的许多问题。人们已经对O O P语言有了这样传统的看法:程序员应当抛弃所知道的每件事 情并且从一组新概念和新文法重新...
  • 23 岁那年你正处在哪个状态?现在呢? 我,23岁,应届毕业生。生活,工作,爱情都处于人生的低谷,一穷二白,一无所有,一事无成。 分享一下成长的建议吧。 ...23岁那年......在22岁的时候我毕业,同时第二年准备考研...
  • 完全用 GNU/Linux 工作(一篇经典老文)

    千次阅读 2012-02-10 14:14:28
    我上次和王益合作写了一个算法演示程序,那个算法是贝尔实验室一位科学家StevenFortune很天才的发明,为了程序能够被身边大多数人使用,我们选择了VC+MFC作为平台。我在分析算法时还得到Fortune很热情的鼓励,寄给我...
  • The Church-Turing thesis

    2012-03-12 13:05:00
    对谓词逻辑公式可以用前束范式分类,前束范式是一公式,其中一切量词都未被否定地处于公式的最前方,谓词逻辑的每一公式都和一前束范式等值或者可以互。有些前束范式类是可判定的,例如只含有全称量词的前束范式。...
  • 就我个人而言我认为我所做的最复杂的项目可能就是程序综合实践中的推箱子和打气球这两个游戏吧,当时为了做这两个游戏是废了很大的力气的。当时由于是转专业的C语言也才刚开始学对于C语言的掌握都算不上好,所以当做...
  • 72.verbose:同命令行的-v参数,即设置详尽报告方式,ftp服务器的所有 响应都将显示给用户,缺省为on. 73.?[cmd]:同help.   Internet(国际互联网)是一个由各种不同类型和规模的独立运行与管理的计算机网络...
  • 我上次和王益合作写了一个算法演示程序,那个算法是贝尔实验室一位科学家Steven Fortune很天才的发明,为了程序能够被身边大多数人使用,我们选择了VC+MFC作为平台。我在分析算法时还得到Fortune很热情的鼓励,寄给...
  • 用Nodejs爬取Matrix67的博客

    千次阅读 2018-09-19 23:23:00
    Matrix67 有大量好玩的内容,可惜作者一直使用这个奇怪的博客,没有索引分类什么的,只有一页页看,我一气之下写了一个爬虫,把所有文章链接和标题打印了出来。供大家方便查看。 ... const got = require('got') ...

空空如也

空空如也

1 2 3 4
收藏数 62
精华内容 24
关键字:

c语言推箱子实验报告

c语言 订阅