推箱子

推箱子-C语言

泄露秘密 提交于 2020-02-16 17:35:52
C语言推箱子 # include <stdio.h> # include <windows.h> # include <conio.h> //地图规格 # define Width 8 # define Height 8 //地图元素 # define Blank 0 # define Wall 1 # define Target 2 //目标位置 # define Box 3 # define RightBox 4 //已经放对位置的箱子 //人的初始位置 # define StartX 6 # define StartY 5 int map [ Height ] [ Width ] = { { 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 } , { 1 , 0 , 0 , 0 , 1 , 0 , 0 , 1 } , { 1 , 0 , 1 , 0 , 1 , 3 , 2 , 1 } , { 1 , 0 , 0 , 0 , 0 , 3 , 2 , 1 } , { 1 , 0 , 1 , 0 , 1 , 3 , 2 , 1 } , { 1 , 0 , 0 , 0 , 1 , 0 , 0 , 1 } , { 1 , 1 , 1 , 1 , 1 , 0 , 0 , 1 } , { 0 , 0 , 0 , 0 , 1 , 1 , 1 , 1 } } ; int

WPF推箱子(三)

无人久伴 提交于 2020-02-07 03:29:10
WPF推箱子(三) 自定义游戏: 自定义XAML核心代码: < Window x : Class = "WPF推箱子.MainWindow" xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns : x = "http://schemas.microsoft.com/winfx/2006/xaml" xmlns : d = "http://schemas.microsoft.com/expression/blend/2008" xmlns : mc = "http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns : local = "clr-namespace:WPF推箱子" mc : Ignorable = "d" Title = "自定义" Height = "600" Width = "600" Loaded = "Window_Loaded" Icon = "img/推箱子.ico" > < Grid > < Grid . ColumnDefinitions > < ColumnDefinition Width = "41*" / > < ColumnDefinition Width = "553*" /

O - 推箱子 HDU - 1254(bfs_box + bfs_man)

怎甘沉沦 提交于 2020-02-04 04:44:47
O - 推箱子 HDU - 1254 推箱子是一个很经典的游戏.今天我们来玩一个简单版本.在一个M*N的房间里有一个箱子和一个搬运工,搬运工的工作就是把箱子推到指定的位置,注意,搬运工只能推箱子而不能拉箱子,因此如果箱子被推到一个角上(如图2)那么箱子就不能再被移动了,如果箱子被推到一面墙上,那么箱子只能沿着墙移动. 现在给定房间的结构,箱子的位置,搬运工的位置和箱子要被推去的位置,请你计算出搬运工至少要推动箱子多少格. Input 输入数据的第一行是一个整数T(1<=T<=20),代表测试数据的数量.然后是T组测试数据,每组测试数据的第一行是两个正整数M,N(2<=M,N<=7),代表房间的大小,然后是一个M行N列的矩阵,代表房间的布局,其中0代表空的地板,1代表墙,2代表箱子的起始位置,3代表箱子要被推去的位置,4代表搬运工的起始位置. Output 对于每组测试数据,输出搬运工最少需要推动箱子多少格才能帮箱子推到指定位置,如果不能推到指定位置则输出-1. Sample Input 1 5 5 0 3 0 0 0 1 0 1 4 0 0 0 1 0 0 1 0 2 0 0 0 0 0 0 0 Sample Output 4 思路如下 此题⚠️: 在人不推箱子的时候,箱子也是障碍物 箱子可以重复走某个位置,但是这个 位置 的每个方向只能走一次(因为 在某个位置 某个方向上重复走

推箱子 后续

五迷三道 提交于 2020-01-30 04:42:42
前言 既做了雏形,不稍微完善一点心里总有点小疙瘩。 效果图 补充说明 1、游戏通关通过rect判断而不是碰撞(两个终点) 2、增加人物行走的动作(布尔标志位) 3、箱子覆盖于终点之上有特殊颜色(image_alt) 4、选素材用心了些 源代码 import tkinter as tk import pygame import time import numpy as np import sys from PIL import ImageTk,Image,ImageGrab from tkinter import StringVar,IntVar,messagebox,Radiobutton #屏幕大小的常量 SCREEN_RECT = pygame.Rect(0,0,640,640) #刷新的帧率 FRAME_PER_SEC = 60 #墙体 class GameSprite(pygame.sprite.Sprite): #(继承父类) 其中sprite是模块 Sprite是类名称 '''精灵基类''' #构造函数/初始化 image_name = 0 def __init__(self,image_name,x=0,y=0,z=1): self.move_num = 0 self.leftorright = True #调用父类初始化方法 super().__init__()

推箱子(c语言)

徘徊边缘 提交于 2020-01-22 15:25:36
基本结构 制作三个地图,用数字分别表示不同的东西(0空1墙2人3箱4终点5人+终6箱+终) 改变a,b的值,实现上下左右;(想到了走迷宫的next数组) 移动时,要判断移动后的位置原本是什么,有时还要判断如果移动两次之后的位置是什么。(简化为讨论三个位置不同情况的不同变化,具体看代码) # include <stdio.h> # include <stdlib.h> # include <conio.h> int n , a , b , x , y , tx , ty , sum , all ; //a,b上下左右;x,y位置;tx,ty尝试位置;sum 6的个数;all移动步数 int map [ 3 ] [ 10 ] [ 10 ] //地图 0空1墙2人3箱4终点5人+终6箱+终 int f ( ) //上下左右相同部分 void up ( int x , int y ) //上 void down ( int x , int y ) //下 void left ( int x , int y ) //左 void right ( int x , int y ) //右 void pmap ( int n ) //打印地图 int main ( ) //主函数 上下左右相同部分 int f ( ) //上下左右相同部分 { if ( map [ n ] [ tx ] [ ty

正在编写推箱子游戏的自动求解程序

▼魔方 西西 提交于 2020-01-20 14:42:42
网上搜索了一下,有好多人现成的产品,不少国产的。编写这个程序只是为了回忆一下算法。不能丢了。 自动求解有俩种方案:一个是求最小行走步骤,一个是求最小推箱子数目。 第一种算法简单些,只要将小人推动的四个方向进行广度优先搜索,通过各种砍掉各种不对的情况来减少搜索数量,但搜索的数量仍然非常巨大。 以下情况可砍掉: 1、前方是墙; 2、前方是箱子,但箱子的前方是墙或者箱子; 3、行动方向和上一步骤的方向是反方向,且上一步没有推箱子; 4、如果小人移动造成推动箱子,那么检查移动后形成的棋盘: 4.1 、以 被推动的棋子 为中心,有没有出现以下死棋。 ■■□ □■■ □□□ □□□ ■ ◆ □ □ ◆ ■ ■ ◆ □ □ ◆ ■ □□□ □□□ ■■□ □■■ ■ 表示这个位置可能是墙或者箱子; ◆ 表示“被推动的棋子”在推动后所在的位置; □ 仅为方便理解图片,无任何其他意义。 如果出现上面的情况,就是死棋。 4.2、比较移动后的步骤和之前的步骤是否出项相同的棋局。 注:这里所指“前方”是指行走方向的前方。 第二种方案是求最小推箱数,这个算法上复杂一些, 以小人为起点,做“油漆桶”处理,什么叫“油漆桶”处理呢,看看画笔软件中使用“油漆桶”功能,他可以渗透所有空白的地方。通过此功能,找到所有可以“接触”到的箱子,对所有这些箱子推动,广度优先算法形成搜索树

js+Jquery 制作推箱子小游戏

送分小仙女□ 提交于 2020-01-20 13:26:33
<!DOCTYPE html> <html> <head> <title>Sokaban</title> <meta charset="utf-8"> <style type="text/css"> .roads { width: 50px; height: 50px; background: url(img/roods.png); background-size: 100% 100%; } .people { width: 50px; height: 50px; background-size: 100% 100%; } .box { background: url(img/box.png) !important; background-size: 100% 100%; } .finish { background: url(img/finish.png); background-size: 100% 100%; } .walls { background: url(img/walls.png); background-size: 100% 100%; } </style> </head> <body> </body> </html> <script type="text/javascript" src='js/jquery-3.1.0.js'></script> <script

012-C语言小游戏之推箱子

廉价感情. 提交于 2020-01-20 13:22:30
012- C语言小游戏之推箱子 一、创建游戏地图 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #define ROWS 11 #define COLS 12 char map [ ROWS ] [ COLS ] = { "###########" , "# #" , "#O #" , "# X# # @#" , "# # # #" , "# # # #" , "# # # #" , "# #" , "# #" , "###########" } ; 因为推箱子游戏地图是由多个格子组成的,所以我们可以使用二维字符数组或字符串数组创建地图。我们可以改变数组中的元素来对游戏功能进行实现。例如:小人移动方向无障碍物,就是小人原来位置的数组元素设置为路,移动后的元素设置为小人。这样就实现了小人移动功能,箱子也是同理。 二、初始化位置和游戏开关 1 2 3 4 5 6 7 8 9 10 //游戏开关 int flag = 1 ; //人的坐标 int renRows = 2 ; int renCols = 1 ; //箱子的坐标 int xiangRows = 3 ; int xiangCols = 2 ; 因为整个游戏操作都是放在循环里的,所以我们先定义一个全局开关,然后用while(开关)来控制游戏的结束。并且在判断用户输入方向前

推箱子小游戏

狂风中的少年 提交于 2020-01-20 13:19:35
游戏制作(推箱子): ① 做地图(css+div) ②背包+游戏公告+表格高亮+图片放大 //未实现 ③箱子的移动(动态操作标签) ④游戏登录页面(页面传值+正则表达式+cookie保存自动登录)//未实现 ⑤游戏逻辑(js面向对象+js逻辑) ⑥后端用户表通信(jquery+ajax+json)//未实现 1.推箱子小游戏js代码: 逻辑思维: 1.布局:创建对象(地图、箱子、人)。 2.人的移动: 人移动前要判断前面是否有墙壁,如果有则不能移动,否则移动。 人移动前要判断前面是否有箱子,如果有则箱子移动、人移动。 箱子移动前要判断前面是否有箱子,如果有则不动,否则箱子移动,人移动。 箱子移动前要判断前面是否有墙壁,如果有则不动,否则箱子移动,人移动。 判断箱子位置和终点位置是否相等,相等则成功。 /** * Created by wln on 2017/9/6. */ $(function () { Game.init($("#w_left"));//初始化容器 }); var Game = { gk:[ {//关卡1 map:[//0:移动区域,1:固定区域,2:墙壁,3:箱子最终位置 1, 1, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 0, 3, 2, 1, 1, 1, 1, 1, 1, 1, 1,

推箱子小游戏

这一生的挚爱 提交于 2020-01-20 13:16:12
//K.h #pragma once class K { //抽象化机器人K //地图大小 #define cx 10 #define cy 10 #define wall1 0xA8 //▓占2个字节 WINDOWS下 #define wall2 0x88 // //为K定义方向,方向符号请无视。 public: enum FX { y = '>', //朝右Y z = '<', //左 -Y s = '^', //上 -X x = 'V' //下 X }; protected: int map[cx][cy]; //0 代表平地可活动; //1 表示墙 //2 表示箱子 //3 箱子的归属 int bakmap[cx][cy]; //做一个备用地图 int ix,iy; //机器人现在的坐标(iy行,第ix列) int fx; //机器人现在的方向 private: void gotoxy(int x,int y){ //移动当前的IX,IY的坐标 ix=x; iy=y; showmap(); } public: K(int tx,int ty,int ifx){ //类构造函数 loadmap(); //机器人K的初使化位置与方向 ix=tx; iy=ty; fx=ifx; showmap(); } void setfx(int sfx){ //设置机器人朝向 fx=sfx;