1. 程式人生 > >c++實現圖形程式設計

c++實現圖形程式設計

1.傳奇動態小介面

素材:連結:https://pan.baidu.com/s/1qLAuEH4mO4sWYj50e6ppyw 密碼:fria

#include<stdio.h>
#include<graphics.h>
#include<conio.h>
//#include<MMSystem.h>
#include <mmsystem.h>
#pragma comment(lib,"winmm.lib")
IMAGE img[24];


void loadResource()
{
	char filename[20] = "";
	for(int i = 0; i<24 ; i++)
	{
		if(i < 10)
		{
			sprintf(filename,"00%d.bmp",i);
		}
		else
		{
			sprintf(filename,"0%d.bmp",i);
		}
		loadimage(&img[i],filename);
	}
}
void putimageMyWindows()
{
	
		initgraph(570,650);
		
		int i = 0;

		mciSendString("open 傳奇霸業.mp3 alias song",0,0,0);
		mciSendString("play song repeat",0,0,0);
		
	while(!_kbhit() )//1
	{
		putimage(0,0,&img[i]);
		Sleep(50);
		i++;

		if(i == 24)
			i = 0;
	}
	closegraph();
}

int main()
{
	loadResource();
	putimageMyWindows();
	return 0;
}
2.不知火舞的動態圖
連結:https://pan.baidu.com/s/1BK_4o7lefwKwRI_IbAk9_Q 密碼:ropi
#include<stdio.h>
#include<conio.h>
#include<graphics.h>
IMAGE background,mm[16],mmy[16];
int imgNum = 0;
void loadResource()
{
	
	loadimage(&background,"background.jpg");
	char filenamebk[20] = "";
	char filenameym[20] = "";
	for(int i= 0 ;i <16 ;i++)
	{
		if(i < 9)
		{
			sprintf(filenamebk,"10%d.bmp",i+1);
			loadimage(&mm[i] , filenamebk);
			sprintf(filenameym,"10d%y.bmp",i+1);
			loadimage(&mmy[i],filenameym);
		}
		else
		{
			sprintf(filenamebk,"1%d.bmp",i+1);
			loadimage(&mm[i] , filenamebk);
			sprintf(filenameym,"1d%y.bmp",i+1);
			loadimage(&mmy[i],filenameym);
		}
	}
	
}
int startX = 410, startY = 300;
void putimageMyWindows()
{
	initgraph(640,480);
	int i = 0;
	while(1)
	{
		
		putimage(0,0,&background);
		putimage(410,300,&mmy[i],SRCAND);
		putimage(410,300,&mm[i],SRCPAINT);
		Sleep(50);
		i++;
		if(i == 16)
			i = 0;

	}
	
	closegraph();
}

int main()
{
	loadResource();
	putimageMyWindows();
	return 0;
}

3.c++實現鍵盤控制人物行走

W,A,S,D,Q,E,Z,X實現8個方向行走 素材:連結:https://pan.baidu.com/s/1jT0k8lGE5Y-1mrNMv6iftg 密碼:7922

#include<stdio.h>
#include<graphics.h>
#include<conio.h>
#include<stdlib.h>

IMAGE background,boy1,boy2;
int startX = 95 , startY=450;
int imgNum = 0;

void loadResource()
{
	loadimage(&background , "background.jpg");
	loadimage(&boy1,"boy1.bmp");
	loadimage(&boy2,"boy2.bmp");
}

void putimageFirstImg()
{
	initgraph(1024,768);
	putimage(0,0,&background); // 70
					// 992 / 8
	putimage(startX,startY,70,124,&boy2,70*imgNum,124*2,SRCAND);
	putimage(startX,startY,70,124,&boy1,70*imgNum,124*2,SRCPAINT);
}

void key_down()
{
	int user = _getch();
	switch(user)
	{
	case 'w':
	case 'W':
	case 72:
		BeginBatchDraw();
		putimage(0,0,&background);
		putimage(startX,startY,70,124,&boy2,70 * imgNum,124*3,SRCAND);
		putimage(startX,startY,70,124,&boy1,70 * imgNum,124*3,SRCPAINT);
		startY -= 10;
		imgNum++;
		if(imgNum == 4)
		{
			imgNum = 0;
		}
		EndBatchDraw();
		break;
	
	
	case 'S': 
	case 's':
	case 80:
		BeginBatchDraw();
		putimage(0,0,&background);
		putimage(startX,startY,70,124,&boy2,70 * imgNum,124*0,SRCAND);
		putimage(startX,startY,70,124,&boy1,70 * imgNum,124*0,SRCPAINT);
		startY += 10;
		imgNum++;
		if(imgNum == 4)
		{
			imgNum = 0;
		}
		EndBatchDraw();

		break;
	



	case 'a':
	case 'A':
	case 75:
		BeginBatchDraw();
		putimage(0,0,&background);
		putimage(startX,startY,70,124,&boy2,70 * imgNum,124*1,SRCAND);
		putimage(startX,startY,70,124,&boy1,70 * imgNum,124*1,SRCPAINT);
		startX -= 10;
		imgNum++;
		if(imgNum == 4)
		{
			imgNum = 0;
		}
		EndBatchDraw();

		break;

	case 'd':
	case 'D':
	case 77:
		BeginBatchDraw();
		putimage(0,0,&background);
		putimage(startX,startY,70,124,&boy2,70 * imgNum,124*2,SRCAND);
		putimage(startX,startY,70,124,&boy1,70 * imgNum,124*2,SRCPAINT);
		startX += 10;
		imgNum++;
		if(imgNum == 4)
		{
			imgNum = 0;
		}
		EndBatchDraw();

			
		break;

	case 'e':
	case 'E':
	case 45:
		BeginBatchDraw();
		putimage(0,0,&background);
		putimage(startX,startY,70,124,&boy2,70 * imgNum,124*7,SRCAND);
		putimage(startX,startY,70,124,&boy1,70 * imgNum,124*7,SRCPAINT);
		startX += 10;
		startY -= 10;
		imgNum++;
		if(imgNum == 4)
		{
			imgNum = 0;
		}
		EndBatchDraw();

			
		break;
	case 'q':
	case 'Q':
		BeginBatchDraw();
		putimage(0,0,&background);
		putimage(startX,startY,70,124,&boy2,70 * imgNum,124*6,SRCAND);
		putimage(startX,startY,70,124,&boy1,70 * imgNum,124*6,SRCPAINT);
		startX -= 10;
		startY -= 10;
		imgNum++;
		if(imgNum == 4)
		{
			imgNum = 0;
		}
		EndBatchDraw();
		break;

	case 'z':
	case 'Z':
		BeginBatchDraw();
		putimage(0,0,&background);
		putimage(startX,startY,70,124,&boy2,70 * imgNum,124*4,SRCAND);
		putimage(startX,startY,70,124,&boy1,70 * imgNum,124*4,SRCPAINT);
		startX -= 10;
		startY += 10;
		imgNum++;
		if(imgNum == 4)
		{
			imgNum = 0;
		}
		EndBatchDraw();
		break;

	case 'X':
	case 'x':
		BeginBatchDraw();
		putimage(0,0,&background);
		putimage(startX,startY,70,124,&boy2,70 * imgNum,124*5,SRCAND);
		putimage(startX,startY,70,124,&boy1,70 * imgNum,124*5,SRCPAINT);
		startX += 10;
		startY += 10;
		imgNum++;
		if(imgNum == 4)
		{
			imgNum = 0;
		}
		EndBatchDraw();
		break;
	}
	


}
int main()
{
	loadResource();
	putimageFirstImg();
	
	
	
	//system("pause");
	while(1)
	{
		key_down();
	}
	return 0;
}


相關推薦

c++實現圖形程式設計

1.傳奇動態小介面 素材:連結:https://pan.baidu.com/s/1qLAuEH4mO4sWYj50e6ppyw 密碼:fria #include<stdio.h> #include<graphics.h> #include<co

C語言+圖形程式設計——自制象棋

用C語言做個象棋是不容易的,涉及到的知識點有很多方面,C語言裡面的基本資料型別、運算子、順序,分支,迴圈結構。還有運用到陣列,函式,指標,以及我們的位運算等。 做出來的象棋程式,自然的話程式碼也不少的,下面的話我就發一部分吧,把棋盤的話,棋子的程式碼寫出來,自然的話,各

C++實現跨平臺程式設計

最近由於windows系統上安裝的是vs編譯器,但是程式碼需要放在linux上進行編譯,但是vs和g++上一些函式不同,為了實現不用過多的程式碼修改 #ifdef _WIN32//vs能夠識別 #elif linux//g++能夠識別

[轉]C語言圖形程式設計(六) -圖形程式設計例項:零件圖形的繪製

第一框 輸入資料,用下面一個函式實現:void Enterdata(){   clrscr();   gotoxy(1,6);   printf("Enter the radius of the circles./n");   gotoxy(1,8);   printf(Enter in_circle rad

C語言圖形程式設計--俄羅斯方塊製作(二)原始碼

所有原始碼檔案,此為本人2年前所作,設計上還有些缺陷。希望大家不吝指正。 下面是標頭檔案head.h /************************ (C) COPYRIGHT 2013 yang_yulei ************************ *

.Net(C#)實現非同步程式設計

最近編寫了一個檢查伺服器叢集的客戶端程式,用於檢查API介面是否可用,由於當時沒有使用多執行緒技術,所有操作均在主程序中執行,這樣就導致了2個問題: 1)由於要傳送HTTP請求,導致主程序無響應,UI卡死 2)使用迴圈輪詢叢集的伺服器列表,逐個請求傳送到伺服器,時間複雜度為

C++實現網路程式設計---抓取網路資料包的實現方法

做過網管或協議分析的人一般都熟悉sniffer這個工具,它可以捕捉流經本地網絡卡的所有資料包。抓取網路資料包進行分析有很多用處,如分析網路是否有網路病毒等異常資料,通訊協議的分析(資料鏈路層協議、IP、UDP、TCP、甚至各種應用層協議),敏感資料的捕捉等。下面我們就來看

C語言圖形程式設計(二、圖形顯示)

一、確定顯示卡 二、選擇顯示模式    三、圖形顯示     20. detectgraph() 顯示卡檢測函式     21. initgraph() 圖形初始化函式     22. getdrivername() 獲取圖形驅動程式名的指標     23. getgraphmode() 獲取圖形模式函式

Leetcode程式設計練習(C++實現

7、反轉整數 /* 題目描述: 給定一個 32 位有符號整數,將整數中的數字進行反轉。 基本思想: 1、類似於字串的逆置,取x的最低位(個位)數字:pop = x % 10; 2、求結果: rev = rev * 10 + pop; 3、將 x 更新為: x

簡單遠端遙控程式【網路程式設計 - 簡單遠端遙控程式,C實現

實驗內容 基於Windows下Winsocket程式設計 實現 1.list (顯示伺服器端當前路徑下所有檔案) 2.get 遠端檔案路徑 本地檔案路徑 (下載遠端檔案 到 本地檔案路徑 ) 3.port 本地檔案路徑 遠端檔案路徑 (上傳 本地檔案 到 本地檔案路徑下 ) 4.quit (退出程式) 參

C語言:程式設計實現兩個矩陣

輸入一個3乘4矩陣✖️4乘5矩陣,輸出一個3乘5的矩陣 #include<stdio.h> int main() { int matrix1[3][4],matrix2[4][5],matrix3[3][5]; int i,j,k; int jz3[

1036 跟奧巴馬一起程式設計 ——c實現

1036 跟奧巴馬一起程式設計 (15 分) 美國總統奧巴馬不僅呼籲所有人都學習程式設計,甚至以身作則編寫程式碼,成為美國曆史上首位編寫計算機程式碼的總統。2014 年底,為慶祝“電腦科學教育周”正式啟動,奧巴馬編寫了很簡單的計算機程式碼:在螢幕上畫一個正方形。現在你也跟他一起畫吧

【一篇文章帶你讀完《C++遊戲與圖形程式設計基礎 第2版》】

《C++遊戲與圖形程式設計基礎 第2版》 下載地址:https://download.csdn.net/download/qq_23996157/10745496 AGK(App Game Kit)下載地址:https://download.csdn.net/download/qq_2

1047 程式設計團體賽——c實現

1047 程式設計團體賽 (20 分) 程式設計團體賽的規則為:每個參賽隊由若干隊員組成;所有隊員獨立比賽;參賽隊的成績為所有隊員的成績和;成績最高的隊獲勝。 現給定所有隊員的比賽成績,請你編寫程式找出冠軍隊。 輸入格式: 輸入第一行給出一個正整數 N(≤10​4

基於udp協議的字串計數【網路程式設計 - 基於udp協議的字串計數,C實現

udp_server.c #include <stdio.h> #include <winsock2.h> #pragma comment(lib, "ws2_32.lib") typedef struct sockaddr_in sockaddr_in ; typedef s

簡單圖形程式設計的學習(2)---點 Qt實現

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

c++模板超程式設計:std::invoke原始碼分析及其實現

在實現invoke之前,我們先看一下標準庫種invoke的使用方式 template< class F, class... Args>std::invoke_result_t<F, Args...> invoke(F&& f, Args&&... ar

基於硬體的CC++)語言程式設計教程12:用函式實現2數之和

本系列文章希望探討以硬體為平臺講述C(C++)知識的一個新的途徑,改變目前大多數C語言教程僅注重C語言本身的語法規則,而脫離其應用環境的現狀。希望讀者通過本教程的學習,能夠立刻學以致用,真正將所學知識應用到專案實踐中。 開發環境:Atmel Studio 7.0 硬體平臺:Microch

Python C/S 網路程式設計(一)之 三種方法實現天氣預報小程式

1. 首先明白下協議棧和庫的概念: 協議棧(Protocol Stack): 是指網路中各層協議的總和,其形象的反映了一個網路中檔案傳輸的過程:由上層協議到底層協議,再由底層協議到上層協議。 庫(Library):主要用來解析要使用的網路通訊協議,包含Python內建標準庫

程式設計珠璣》程式碼之路12:如何用C/C++實現array[-1]並利用它寫出優美的程式碼

我們就以最大子陣列和為例: 最大子段和問題:給一組數,計算最大子段和。 在部落格:最大欄位和的6種解法,解法三中,我們提到了儲存前i項和的操作: cache[i]代表前i-1項之和,因為在c/c++中,cache[-1]會越界,所以如果用cache[i]代表前i項和的話,那麼在用遞推公式