• 回答数

    8

  • 浏览数

    182

可爱谈心
首页 > 期刊论文 > 里面包含连连看的代码及毕业论文

8个回答 默认排序
  • 默认排序
  • 按时间排序

转瞬壹刻

已采纳

核心功能:一个主线程代表程序运行,三个子线程:一个负责用户交互,一个负责绘图,一个负责网格生成、棋盘布局以及单位网格分配。核心功能这么处理基本OK了。其它功能要看你的创意了,比如你想要replay动画,就得考虑文件数据保存,一个直接的方法就是按照时间把位图数据存下来。

82 评论

蔻蔻妖妖柒

这个真的没有,你百度吧

245 评论

夏天的小雾

////////////////////////////////////////////////////////////////////////// // 版权所有// 作者:董波// 日期: 简介:连连看算法//////////////////////////////////////////////////////////////////////////#ifndef _ND_LLKAG_H_ #define _ND_LLKAG_H_#if _MSC_VER > 1000 #pragma once#endif#include // for/* 约定: 0代表空白,其它编号从1开始向后排。。。*/static const int BLANK_GRID = 0;typedef std::vector< POINT2D > PT2D_VEC;class CLLKAg {public:CLLKAg( int iRow = 9, int iCol = 16 );~CLLKAg();public:// 开始游戏,服务器调用void Start( int iCardNum = 20 );// 获得数据信息,用于客户端渲染,也可用于服务器获得初始化信息后下发void GetState( std::vector& vec ) const;// 客户端调用,从网络数据获取状态 void SetState( const int* pStates, unsigned uSize );// 获得内部指针,但是不能修改,只读的const int* GetMap() const;int GetRow() const;int GetCol() const;// 是否是可消除的,是否是可连接的。 bool IsLink( POINT2D ptFirst, POINT2D ptSecond ) const;// 判断是否已经胜利bool IsWin() const;// 清除两个棋子,客户端调用之前通常需要调用IsLinkbool ClearPair( POINT2D ptFirst, POINT2D ptSecond );// 用于调试 #if defined( _DEBUG ) || defined( DEBUG )int* GetMap_D(); // 返回内部指针void RePermutation(); // 重新排列#endif // #if defined( _DEBUG ) || defined( DEBUG )­// 内部实现的函数,外部不需要调用。 protected:­// 是否是同一直线连通 bool DirectLink( POINT2D ptFirst, POINT2D ptSecond ) const;// 1直角接口连通 bool OneCornerLink( POINT2D ptFirst, POINT2D ptSecond ) const;// 2直角接口连通bool TwoCornerLink( POINT2D ptFirst, POINT2D ptSecond ) const;private:int* m_pMap; // 用于代表地图int m_iRow; // 行数int m_iCol; // 列数};­////////////////////////////////////////////////////////////////////////// // 得到地图inline const int* CLLKAg::GetMap() const{return m_pMap;}// 得到行数 inline int CLLKAg::GetRow() const{return m_iRow;}// 得到列数inline int CLLKAg::GetCol() const{return m_iCol;}#if defined( _DEBUG ) || defined( DEBUG ) // 用于调试 inline int* CLLKAg::GetMap_D(){return m_pMap;}#endif // #if defined( _DEBUG ) || defined( DEBUG )­#endif // #ifndef _ND_LLKAG_H_­­////////////////////////////////////////////////////////////////////////// // 版权所有// 作者:董波// 日期: 简介:连连看算法实现//////////////////////////////////////////////////////////////////////////// 使用MFC的时候请解注释下面这行: #include ""#include ""#include #include #include #include /* 一些模板函数*/template < class T >T _max( T lhs, T rhs ){return lhs > rhs ? lhs : rhs;}template < class T > T _min( T lhs, T rhs ){return lhs < rhs ? lhs : rhs;}­// 构造,初始化一些内存 CLLKAg::CLLKAg( int iRow /* = 9 */, int iCol /* = 16 */ ):m_iRow(iRow),m_iCol(iCol),m_pMap(NULL){assert( m_iRow * m_iCol >= 2 );m_pMap = new int[ m_iRow*m_iCol ];if( NULL == m_pMap ) { throw std::bad_alloc( "内存分配失败" );}memset( m_pMap, BLANK_GRID, m_iCol * m_iRow );}CLLKAg::~CLLKAg() {if( NULL != m_pMap ){ delete [] m_pMap;}}// 服务器调用,这将随机生成一个棋盘(地图、桌面) void CLLKAg::Start( int iCardNum /* = 20 */){assert( ( m_iCol * m_iRow % 2 == 0 ) && "必须为偶数" );// 根据系统时间初始化种子 srand( static_cast( time(NULL) ) );// 初始化的基本思想: // 成对的随机填充,然后随机打乱。int iSize = m_iCol * m_iRow;int i = 0;while ( i< iSize ){ int iTarget = rand() % iCardNum + 1; m_pMap[i] = iTarget; ++i; m_pMap[i] = iTarget; ++i;}std::random_shuffle( m_pMap, m_pMap + iSize ); }// 客户端调用,使用网络传递来的信息来初始化游戏状态 void CLLKAg::SetState( const int* pStates, unsigned uSize ){assert( uSize == m_iRow * m_iCol * sizeof (int) );memcpy( m_pMap, pStates, uSize ); }// 得到地图状态 void CLLKAg::GetState( std::vector& vec ) const{( m_pMap, m_pMap + m_iRow*m_iCol );}// 判断是否已经获胜 bool CLLKAg::IsWin() const{const int iSize = m_iCol * m_iRow;for( int i=0; i< iSize; ++i ){ if( BLANK_GRID != m_pMap[i] ) { return false; }}return true; }// 是否是直接连通! bool CLLKAg::DirectLink( POINT2D ptFirst, POINT2D ptSecond )const{// 根本不可能在一条直线上的时候直接返回falseif( ( != ) && ( != ) ){ return false;}// 不应该是相同的点,这是不能接受的! if( ( == ) && ( == ) ){ return false;}// 分情况// 同一x if( == ){ int iMin = _min( , ); int iMax = _max( , ); for( int i=iMin +1; i< iMax; ++i ) { if( m_pMap[i*m_iCol + ] != BLANK_GRID ) { return false; } } return true; }else{ int iMin = _min( , ); int iMax = _max( , ); for( int i=iMin+1; i=0; --i ){ if( m_pMap[*m_iCol +i] != BLANK_GRID ) { break; } POINT2D ptOne = { i, }; if( OneCornerLink( ptOne, ptSecond ) ) { return true; }}// 再向右 for( i=; i=0; --i ){ if( m_pMap[i*m_iCol+] != BLANK_GRID ) { break; } POINT2D ptOne = { , i }; if( OneCornerLink( ptOne, ptSecond ) ) { return true; }}// 向下 for( i=; i

300 评论

cuteorange290

贪食蛇

234 评论

椒盐儿橙子

这些游戏都不小啊,很体现功力的。贪吃蛇好象看到过C语言版本的,python的应该了有。不过很多需要先安装pygame包的。

170 评论

失忆看星星

连连看java源代码import .*;import .*;import .*;public class lianliankan implements ActionListener{JFrame mainFrame; //主面板Container thisContainer;JPanel centerPanel,southPanel,northPanel; //子面板JButton diamondsButton[][] = new JButton[6][5];//游戏按钮数组JButton exitButton,resetButton,newlyButton; //退出,重列,重新开始按钮JLabel fractionLable=new JLabel("0"); //分数标签JButton firstButton,secondButton; //分别记录两次被选中的按钮int grid[][] = new int[8][7];//储存游戏按钮位置static boolean pressInformation=false; //判断是否有按钮被选中int x0=0,y0=0,x=0,y=0,fristMsg=0,secondMsg=0,validateLV; //游戏按钮的位置坐标int i,j,k,n;//消除方法控制public void init(){mainFrame=new JFrame("JKJ连连看");thisContainer = ();(new BorderLayout());centerPanel=new JPanel();southPanel=new JPanel();northPanel=new JPanel();(centerPanel,"Center");(southPanel,"South");(northPanel,"North");(new GridLayout(6,5));for(int cols = 0;cols < 6;cols++){for(int rows = 0;rows < 5;rows++ ){diamondsButton[cols][rows]=new JButton((grid[cols+1][rows+1]));diamondsButton[cols][rows].addActionListener(this);(diamondsButton[cols][rows]);}}exitButton=new JButton("退出");(this);resetButton=new JButton("重列");(this);newlyButton=new JButton("再来一局");(this);(exitButton);(resetButton);(newlyButton);(((())));(fractionLable);(280,100,500,450);(true);}public void randomBuild() {int randoms,cols,rows;for(int twins=1;twins<=15;twins++) {randoms=(int)(()*25+1);for(int alike=1;alike<=2;alike++) {cols=(int)(()*6+1);rows=(int)(()*5+1);while(grid[cols][rows]!=0) {cols=(int)(()*6+1);rows=(int)(()*5+1);}[cols][rows]=randoms;}}}public void fraction(){(((())+100));}public void reload() {int save[] = new int[30];int n=0,cols,rows;int grid[][]= new int[8][7];for(int i=0;i<=6;i++) {for(int j=0;j<=5;j++) {if([i][j]!=0) {save[n]=[i][j];n++;}}}n=n-1;;while(n>=0) {cols=(int)(()*6+1);rows=(int)(()*5+1);while(grid[cols][rows]!=0) {cols=(int)(()*6+1);rows=(int)(()*5+1);}[cols][rows]=save[n];n--;}(false);pressInformation=false; //这里一定要将按钮点击信息归为初始init();for(int i = 0;i < 6;i++){for(int j = 0;j < 5;j++ ){if(grid[i+1][j+1]==0)diamondsButton[i][j].setVisible(false);}}}public void estimateEven(int placeX,int placeY,JButton bz) {if(pressInformation==false) {x=placeX;y=placeY;secondMsg=grid[x][y];secondButton=bz;pressInformation=true;}else {x0=x;y0=y;fristMsg=secondMsg;firstButton=secondButton;x=placeX;y=placeY;secondMsg=grid[x][y];secondButton=bz;if(fristMsg==secondMsg && secondButton!=firstButton){xiao();}}}public void xiao() { //相同的情况下能不能消去。仔细分析,不一条条注释if((x0==x &&(y0==y+1||y0==y-1)) || ((x0==x+1||x0==x-1)&&(y0==y))){ //判断是否相邻remove();}else{for (j=0;j<7;j++ ) {if (grid[x0][j]==0){ //判断第一个按钮同行哪个按钮为空if (y>j) { //如果第二个按钮的Y坐标大于空按钮的Y坐标说明第一按钮在第二按钮左边for (i=y-1;i>=j;i-- ){ //判断第二按钮左侧直到第一按钮中间有没有按钮if (grid[x][i]!=0) {k=0;break;}else{ k=1; } //K=1说明通过了第一次验证}if (k==1) {linePassOne();}}if (yx) {for (n=x0;n>=x+1 ;n-- ) {if (grid[n][j]!=0) {k=0;break;}if(grid[n][j]==0 && n==x+1) {remove();}}}}}for (i=0;i<8;i++ ) { //列if (grid[i][y0]==0) {if (x>i) {for (j=x-1;j>=i ;j-- ) {if (grid[j][y]!=0) {k=0;break;}else { k=1; }}if (k==1) {rowPassOne();}}if (xy) {for (n=y0;n>=y+1 ;n--) {if (grid[i][n]!=0) {k=0;break;}if(grid[i][n]==0 && n==y+1) {remove();}}}}}}}public void linePassOne(){if (y0>j){ //第一按钮同行空按钮在左边for (i=y0-1;i>=j ;i-- ){ //判断第一按钮同左侧空按钮之间有没按钮if (grid[x0][i]!=0) {k=0;break;}else { k=2; } //K=2说明通过了第二次验证}}if (y0i) {for (j=x0-1;j>=i ;j-- ) {if (grid[j][y0]!=0) {k=0;break;}else { k=2; }}}if (x0

202 评论

木匠森林

我有的hi 我前两天刚刚帮一个人做了一个不过他要的是图片的你们不会是同一个学校的吧?????

303 评论

青春冰帝

一下是我的思路 我也是菜鸟 愿交流1.用一个线程来专门负责刷帧 (就是定时重绘界面)2.用一个数组来存储游戏的数据 3.从数组来绘制画面4.从用户输入 改变 数组类的话应该有GameView ---用于负责怎个游戏的绘制 里面新建线程刷帧GameData ---用于存储游戏数据 和 改变数据GameContrl ---由于接受用户输入 Game ---控制怎个游戏

312 评论

相关问答

  • java连连看毕业论文

    楼主觉悟吧。。。

    寳呗颖1 5人参与回答 2023-12-09
  • 连连看游戏毕业论文

    活动目标:1.有参与操作活动的兴趣,体验在探索中创作的快乐;2.大胆尝试几种常见的连接方法,发现物体间的连接有的需要辅助物,有的不需要辅助物;3.能积极参与各种

    偶素小cici 7人参与回答 2023-12-10
  • 毕业论文页码连续性设置

    设置页脚。。。

    雨霖霖i 4人参与回答 2023-12-07
  • 大连大学毕业论文封面

    毕业论文撰写规范本科生毕业论文是学生在毕业前完成的一份具有一定科研价值和实用价值的学术论文。它是本科学生开始从事工程设计、科学实验和社会研究等的初步尝试,是学生

    罗曼蒂克123 3人参与回答 2023-12-09
  • 连连看网页游戏毕业论文

    在我们平凡的日常里,大家都不可避免地要接触到作文吧,作文根据体裁的不同可以分为记叙文、说明文、应用文、议论文。如何写一篇有思想、有文采的作文呢?以下是我精心整理

    纽约纽约k 3人参与回答 2023-12-07