c语言代码表白会动的小人(c语言简单表白代码教程)
C语言小题,这个图片里面的小人是输出,怎么用C语言让这个小人从右往左移动呢?
其实就是输出4行数据。
前面有若干个空格。所以要想让它移动的话,执行两步
清屏
重新输出4行数据,每行前面空格减少一位。
这样就向左移动了一位了。
循环执行 就是不停向左,类似的 还可以上下右移动。
如何用C语言编程一个移动的爱心
//一个非常简陋的实现,看看行不行
#includeiostream
#includewindows.h
using namespace std;
int main()
{
char heart[10][10]=
{
{' ',' ','*','*',' ','*','*',' ',' ',' '},
{' ','*',' ',' ','*',' ',' ','*',' ',' '},
{' ','*',' ',' ','*',' ',' ','*',' ',' '},
{' ','*',' ',' ',' ',' ',' ','*',' ',' '},
{' ',' ','*',' ',' ',' ','*',' ',' ',' '},
{' ',' ','*',' ',' ',' ','*',' ',' ',' '},
{' ',' ',' ','*',' ','*',' ',' ',' ',' '},
{' ',' ',' ','*',' ','*',' ',' ',' ',' '},
{' ',' ',' ',' ','*',' ',' ',' ',' ',' '},
{' ',' ',' ',' ',' ',' ',' ',' ',' ',' '},
};
int index=0;
while(1){
for(int i=0;i10;++i){
for(int ii=0;iiindex;++ii)
cout' ';
for(int j=0;j10;++j)
coutheart[i][j]' ';
coutendl;
}
index=(index+1)%15;
Sleep(300);
system("cls");
}
return 1;
}
c语言表白程序代码
用C语言编写一个程序相信爱的人表白。
电脑:华为MateBook14
系统:Windows10
软件:VC++
1、正确打开VC++,设置适合自己的字体大小及你想说的话。
2、编写程序:
#include stdio.hvoid main(){printf("*********************\n");printf("我是发自内心的爱你\n");printf("*********************\n");}。
3、点击“编译”,“连接”,“运行”,检验程序是否正确。
求C语言编写的表白程序,要代码
#define IdYes 1002
#define IdNo 1003
#define IdStatic 1004
#define IdTimer 1005
#define Width 640
#define Height 480
#define Tick 2000
#includewindows.h
int x,y;
RECT rdesk;
HINSTANCE hinst;
HWND hyes,hno;
BOOL quit=FALSE;
LRESULT CALLBACK WndProc(HWND hwnd,UINT Message,WPARAM wParam,LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
RECT rclient;
HBRUSH hbrbkgnd;
static COLORREF c;
static BYTE r,g,b;
switch(Message)
{
case WM_TIMER:
if(IdTimer==LOWORD(wParam))
{
r=(BYTE)(rand()%256);
g=(BYTE)(rand()%256);
b=(BYTE)(rand()%256);
c=RGB(r,g,b);
InvalidateRect(hwnd,NULL,TRUE);
UpdateWindow(hwnd);
}
break;
case WM_PAINT:
hdc=BeginPaint(hwnd,ps);
hbrbkgnd=CreateSolidBrush(c);
SelectObject(hdc,hbrbkgnd);
GetClientRect(hwnd,rclient);
FillRect(hdc,rclient,hbrbkgnd);
DeleteObject(hbrbkgnd);
EndPaint(hwnd,ps);
break;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IdYes:
quit=TRUE;
MessageBox(hwnd,TEXT("回答正确,太太太好了!"),TEXT("宝贝"),MB_ICONEXCLAMATION|MB_OK);
SendMessage(hwnd,WM_CLOSE,0,0);
break;
case IdNo:
MessageBox(hwnd,TEXT("回答错误哦,我很生气呢!"),TEXT("宝贝"),MB_ICONEXCLAMATION|MB_OK);
break;
}
break;
case WM_SIZE:
case WM_MOVE:
SetWindowPos(hwnd,HWND_TOPMOST,x,y,Width,Height,SWP_SHOWWINDOW);
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_CLOSE:
if(quit)
{
KillTimer(hwnd,IdTimer);
DestroyWindow(hwnd);
}
break;
case WM_CREATE:
CreateWindow(TEXT("Static"),
TEXT("请回答:做我女朋友好吗?"),
WS_CHILD|WS_VISIBLE|SS_CENTER,
200,
200,
240,
20,
hwnd,
(HMENU)IdStatic,
hinst,
NULL
);
hyes=CreateWindow(TEXT("Button"),
TEXT("好"),
WS_CHILD|WS_VISIBLE|BS_CENTER,
270,
230,
45,
20,
hwnd,
(HMENU)IdYes,
hinst,
NULL
);
hno=CreateWindow(TEXT("Button"),
TEXT("不好"),
WS_CHILD|WS_VISIBLE|BS_CENTER,
325,
230,
45,
20,
hwnd,
(HMENU)IdNo,
hinst,
NULL
);
SetTimer(hwnd,IdTimer,Tick,NULL);
break;
default:
return DefWindowProc(hwnd,Message,wParam,lParam);
}
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
WNDCLASSEX wc;
HWND hwnd;
MSG msg;
hinst=hInstance;
srand(time(NULL));
memset(wc,0,sizeof(wc));
wc.cbSize=sizeof(WNDCLASSEX);
wc.lpfnWndProc=WndProc;
wc.hInstance=hInstance;
wc.hCursor=LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);
wc.lpszClassName=TEXT("WindowClass");
wc.hIcon=LoadIcon(NULL,IDI_APPLICATION);
wc.hIconSm=LoadIcon(NULL,IDI_APPLICATION);
if(!RegisterClassEx(wc))
{
MessageBox(NULL,TEXT("窗口注册失败!"),TEXT("错误"),MB_ICONEXCLAMATION|MB_OK);
return 0;
}
GetWindowRect(GetDesktopWindow(),rdesk);
x=(rdesk.right-Width)/2;
y=(rdesk.bottom-Height)/2,
hwnd = CreateWindowEx(WS_EX_TOPMOST,
TEXT("WindowClass"),
TEXT("I Love You"),
WS_THICKFRAME|WS_VISIBLE,
x,
y,
Width,
Height,
NULL,NULL,hInstance,NULL);
if(NULL==hwnd)
{
MessageBox(NULL,TEXT("窗口创建失败!"),TEXT("错误!"),MB_ICONEXCLAMATION|MB_OK);
return 0;
}
while(GetMessage(msg,NULL,0,0)0)
{
TranslateMessage(msg);
DispatchMessage(msg);
}
return msg.wParam;
}
截图
用C语言画简单的小人
TC2.0里有一个bgidemo.c的图形编程示例程序。
其中有一个演示屏幕贴图的子程序,一个外星人的飞船在屏幕上飞来飞去。
这个程序可以简单地修改一下就可以用于你的需求了。
程序不难看懂。
这个代码我找到了。大概说一下。LZ需要自己去找一下完整的代码研究,这里我只贴出相关的一段。
void PutImageDemo(void)
{
static int r = 20;
static int StartX = 100;
static int StartY = 50;
struct viewporttype vp;
int PauseTime, x, y, ulx, uly, lrx, lry, size, i, width, height, step;
void *Saucer;
MainWindow("GetImage / PutImage Demonstration");
getviewsettings( vp );
/* Draw Saucer */ 下面是用绘画的方式画了一个简单的飞碟。这个飞碟图用于之前复制到内存里备用。
setfillstyle( SOLID_FILL, getmaxcolor() );
fillellipse(StartX, StartY, r, (r/3)+2);
ellipse(StartX, StartY-4, 190, 357, r, r/3);
line(StartX+7, StartY-6, StartX+10, StartY-12);
circle(StartX+10, StartY-12, 2);
line(StartX-7, StartY-6, StartX-10, StartY-12);
circle(StartX-10, StartY-12, 2);
/* Read saucer image */ 这里开始把那个飞碟的小图图复制到一个内存缓冲区里。先计算大小,需要的内存大小。
ulx = StartX-(r+1);
uly = StartY-14;
lrx = StartX+(r+1);
lry = StartY+(r/3)+3;
width = lrx - ulx + 1;
height = lry - uly + 1;
size = imagesize(ulx, uly, lrx, lry);
Saucer = malloc( size ); // 分配内存
getimage(ulx, uly, lrx, lry, Saucer); // 搞到了。
putimage(ulx, uly, Saucer, XOR_PUT); // 这就在原位置上,以异或的方式画一下。用异或的方式绘图,两次绘制后,图像正好就会消失为原来的背景。
但是,LZ的可能这样不行,那就需要复杂一些的绘制了,用人物的黑轮廓图或上背景,得到镂空,然后再把黑背景的角色用or方式绘上。
下面就是随机地绘制了。
/* Plot some "stars" */
for ( i=0 ; i1000; ++i )
putpixel(random(MaxX), random(MaxY), random( MaxColors-1 )+1);
x = MaxX / 2;
y = MaxY / 2;
PauseTime = 70;
/* until a key is hit */
while ( !kbhit() ) {
/* Draw the Saucer */
putimage(x, y, Saucer, XOR_PUT); /* draw image */
delay(PauseTime);
putimage(x, y, Saucer, XOR_PUT); /* erase image */
上面的还是两次 xor,显示图片,消除图片。
/* Move Saucer */
step = random( 2*r );
if ((step/2) % 2 != 0 )
step = -1 * step;
x = x + step;
step = random( r );
if ((step/2) % 2 != 0 )
step = -1 * step;
y = y + step;
if (vp.left + x + width - 1 vp.right)
x = vp.right-vp.left-width + 1;
else
if (x 0)
x = 0;
if (vp.top + y + height - 1 vp.bottom)
y = vp.bottom-vp.top-height + 1;
else
if (y 0)
y = 0;
}
free( Saucer );
Pause();
}
另外,团IDC网上有许多产品团购,便宜有口碑