求助!急求帮助!关于C程序插入图片

式微 2012-05-21 07:52:11
去年刚开始学C程序设计,现在把基本概念学完了,老师布置了一个综合习题:编写俄罗斯方块代码。
分成三部分进行。下面是我的第一部分:左边文字说明和右边方块预览。

我主要求助三点,希望有牛人能帮我解答。
1.为什么方块预览越到后面方块间间隔越大。(如图所示)
2.怎样才能在(520.180)的位置插入“score.png”的图片?我试了,运行未果,图片没有出来。(图片在程序同一级文件夹p里)
3.就是在画方块那里,如果我把颜色(如RED,BLUE等用图片代替,怎么实现?我直接输了“p\\1.bmp”),g_Block.color的类型又不符。

这几点一直困扰我编不下去,望高手指点。


//引用图片,分级分区域
#include <graphics.h>
#include <conio.h>
#include <time.h>
//定义每个方块旋转后四个面和该方块固定颜色
struct block
{
WORD dir[4]; //方向
COLORREF color;
}g_Blocks[7]={{0xf000,0x8888,0xf000,0x8888,BLUE},{0xcc00,0xcc00,0xcc00,0xcc00,RED},
{0xe400,0x4c40,0x4e00,0x8c80,YELLOW},{0x88c0,0xe800,0xc440,0x2e00,GREEN},
{0x44c0,0x8e00,0xc880,0xe200,MAGENTA},{0xc600,0x4c80,0xc600,0x4c80,LIGHTGRAY},
{0x6c00,0x8c40,0x6c00,0x8c40,WHITE}};
//表示一个方块
struct Block
{
int x;
int y;
unsigned int id; //哪个类型的方块
unsigned int dir; //该方块的哪种形态
}nowblock,nextblock; //画方块
void DrawBlock()
{
WORD b,c;
int i,j;
nextblock.id=rand()%7;
nextblock.dir=rand()%4;

nextblock.x=530;
nextblock.y=90;

b=g_Blocks[nextblock.id].dir[nextblock.dir];
c=0x8000;
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{

if(b&c)
{
setfillstyle(g_Blocks[nextblock.id].color);
bar(nextblock.x+22*i,nextblock.y+22*j,nextblock.x+20*(i+1),nextblock.y+20*(j+1));

}
c>>=1;
}

}

} //初始化界面
void Init()
{

initgraph(640,480);
rectangle(20,20,170,170);
rectangle(180,-1,460,455);
rectangle(475,50,635,200);
rectangle(20,180,170,455);
rectangle(475,230,635,300);
} //左边文字说明
void text_left()
{
RECT r_help= {20,20,170,70};
RECT r_left= {20,20,170,125};
RECT r_right= {20,20,170,155};
RECT r_down= {20,20,170,185};
RECT r_up= {20,20,170,215};
drawtext("游戏按键帮助:",&r_help,DT_CENTER | DT_VCENTER | DT_SINGLELINE);
drawtext("左移:←",&r_left,DT_CENTER | DT_VCENTER | DT_SINGLELINE);
drawtext("右移:→",&r_right,DT_CENTER | DT_VCENTER | DT_SINGLELINE);
drawtext("加速:↓",&r_down,DT_CENTER | DT_VCENTER | DT_SINGLELINE);
drawtext("旋转:↑",&r_up,DT_CENTER | DT_VCENTER | DT_SINGLELINE);
RECT t1= {20,180,170,260};
RECT t2= {20,180,170,300};
RECT t3= {20,180,170,340};
RECT t4= {20,300,120,490};
RECT t5= {20,330,170,520};
drawtext("消除一行得10分",&t1,DT_CENTER | DT_VCENTER | DT_SINGLELINE);
drawtext("消除两行得30分",&t2,DT_CENTER | DT_VCENTER | DT_SINGLELINE);
drawtext("消除三行得40分",&t3,DT_CENTER | DT_VCENTER | DT_SINGLELINE);
drawtext("制作人:",&t4,DT_CENTER | DT_VCENTER | DT_SINGLELINE);
drawtext("ZMQ",&t5,DT_CENTER | DT_VCENTER | DT_SINGLELINE);
} int main()
{
srand(time(NULL));
IMAGE img;
Init();


text_left();
DrawBlock();
loadimage(&img,"p\\score.png");
putimage(0,0,&img);
getch();
closegraph();
return 0;
}

...全文
186 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
cxdzxc 2012-05-22
  • 打赏
  • 举报
回复
前两天刚写了个贪吃蛇,正准备写俄罗斯方块,把你QQ报上来,我们一起研究!
cxdzxc 2012-05-22
  • 打赏
  • 举报
回复
前两天刚写了个贪吃蛇,正准备写俄罗斯方块,把你QQ报上来,我们一起研究
式微 2012-05-22
  • 打赏
  • 举报
回复
好的。1635025489

[Quote=引用 2 楼 的回复:]

前两天刚写了个贪吃蛇,正准备写俄罗斯方块,把你QQ报上来,我们一起研究
[/Quote]
式微 2012-05-22
  • 打赏
  • 举报
回复
是VC

[Quote=引用 1 楼 的回复:]

该不会还在用Turbo C吧?
[/Quote]
hello-world2016 2012-05-21
  • 打赏
  • 举报
回复
该不会还在用Turbo C吧?

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧