趣味俄罗斯方块开始游戏
发表在C语言图书答疑 2018-10-27 悬赏:1 学分 《C语言项目开发实战入门》第1章 趣味俄罗斯方块 45页-47页
是否精华
版块置顶:
while(1){
Flag(tetris);

Temp=tetris->flag;//记住当前俄罗斯方块序号

......

tetris->flag=tetris->next;

......

tetris->flag=Temp;//取出当前俄罗斯方块序号

Temp保存的都是第一方块,求老师解答?

2018-10-27 16:00:14编辑
分享到:
精彩评论 4
李木子
学分:2954 LV11
2018-10-29
沙发

你好:

  具体是书上的哪段代码 我看一下整体代码

suuyuuan
学分:9 LV1
2018-10-30
板凳

李木子 发表于2018-10-29 09:14

你好:

  具体是书上的哪段代码 我看一下整体代码

/**

 * 随机产生俄罗斯方块类型的序号

 */

void Flag(struct Tetris *tetris)

{

  tetris->number++;     //记住产生方块的个数

srand(time(NULL));   //初始化随机数

if(tetris->number==1)

  {

  tetris->flag = rand()%19+1;   //记住第一个方块的序号

  }

  tetris->next = rand()%19+1;   //记住下一个方块的序号

}

/**

 * 开始游戏

 */

void Gameplay()

{

int n;

  struct Tetris t,*tetris=&t;    //定义结构体的指针并指向结构体变量

  char ch;         //定义接收键盘输入的变量

  tetris->number=0;       //初始化俄罗斯方块数为0个

  tetris->speed=300;       //初始移动速度为300ms

tetris->score=0;       //初始游戏的分数为0分

  tetris->level=1;       //初始游戏为第1关

  while(1) //循环产生方块,直至游戏结束

  {

  Flag(tetris);     //得到产生俄罗斯方块类型的序号

  Temp=tetris->flag;     //记住当前俄罗斯方块序号

  tetris->x=FrameX+2*Frame_width+6;//获得预览界面方块的x坐标

  tetris->y=FrameY+10;            //获得预览界面方块的y坐标

  tetris->flag = tetris->next;  //获得下一个俄罗斯方块的序号

  PrintTetris(tetris);           //调用打印俄罗斯方块方法

  tetris->x=FrameX+Frame_width;  //获得游戏窗口中心方块x坐标

  tetris->y=FrameY-1;     //获得游戏窗口中心方块y坐标

  tetris->flag=Temp;  


李木子
学分:2954 LV11
2018-10-30
地板

suuyuuan 发表于2018-10-30 11:02

/**

 * 随机产生俄罗斯方块类型的序号

 */

void Flag(struct Tetris *tetris)

{

  tetris->number++;     //记住产生方块的个数

srand(time(NULL));   //初始化随机数

if(tetris->number==1)

  {

  tetris->flag = rand()%19+1;   //记住第一个方块的序号

  }

  tetris->next = rand()%19+1;   //记住下一个方块的序号

}

/**

 * 开始游戏

 */

void Gameplay()

{

int n;

  struct Tetris t,*tetris=&t;    //定义结构体的指针并指向结构体变量

  char ch;         //定义接收键盘输入的变量

  tetris->number=0;       //初始化俄罗斯方块数为0个

  tetris->speed=300;       //初始移动速度为300ms

tetris->score=0;       //初始游戏的分数为0分

  tetris->level=1;       //初始游戏为第1关

  while(1) //循环产生方块,直至游戏结束

  {

  Flag(tetris);     //得到产生俄罗斯方块类型的序号

  Temp=tetris->flag;     //记住当前俄罗斯方块序号

  tetris->x=FrameX+2*Frame_width+6;//获得预览界面方块的x坐标

  tetris->y=FrameY+10;            //获得预览界面方块的y坐标

  tetris->flag = tetris->next;  //获得下一个俄罗斯方块的序号

  PrintTetris(tetris);           //调用打印俄罗斯方块方法

  tetris->x=FrameX+Frame_width;  //获得游戏窗口中心方块x坐标

  tetris->y=FrameY-1;     //获得游戏窗口中心方块y坐标

  tetris->flag=Temp;  


你好:

   temp是记录当前的俄罗斯方块的序号嘛

suuyuuan
学分:9 LV1
2018-10-31
4L

李木子 发表于2018-10-30 16:03

你好:

   temp是记录当前的俄罗斯方块的序号嘛

但是第二次循环,最后这条语句 tetris->flag=Temp;  Temp的值又赋值给了tetris->flag,tetris->flag并没有接受到tetris->next的值?

首页上一页 1 下一页尾页 4 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照