国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - C++可視化角色按鍵移動控制的實現

C++可視化角色按鍵移動控制的實現

2021-08-23 15:22大力橙 C/C++

這篇文章主要介紹了C++可視化角色按鍵移動控制的實現,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

1.新建項目

新建一個空項目,并添加一個源文件(.cpp)

C++可視化角色按鍵移動控制的實現

C++可視化角色按鍵移動控制的實現

記住.cpp文件所在的位置

2.新建一個窗口,并添加背景圖片

將要使用的圖片,拷貝到項目所在文件夾
與.cpp文件處于同一文件夾

  1. #include<stdio.h> //用于標準輸入輸出
  2. #include<graphics.h> //用于圖形的函數庫
  3.  
  4. int main()
  5. {
  6. initgraph(1440, 768); //創建一個窗口,大小設定為背景大小,以免圖片拉伸變形
  7. IMAGE background; //創建一個圖像,命名為background
  8. loadimage(&background, "background.bmp");
  9. //加載背景圖片
  10. putimage(0, 0, &background);
  11. //輸出到窗口,背景圖片從0,0,為原點
  12. getchar(); //暫停,等待輸入任意字符
  13. closegraph(); //關閉窗口
  14. return 0;

C++可視化角色按鍵移動控制的實現

3.加入一個角色

在main()函數中插入角色

  1. IMAGE role, roleY;
  2. loadimage(&role, "role.bmp" );
  3. loadimage(&roleY, "roleY.bmp");
  4. putimage(100, 500, 93,100,&roleY,0,200,SRCAND);
  5. putimage(100, 500, 93,100,&role, 0,200,SRCPAINT );

第4行
putimage(100, 500, 93,100,&roleY,0,200,SRCAND);
100,500表示角色在窗口中的坐標,位置大約在左下角
93,100 表示角色圖片的大小
&roleY插入的圖片對象
0,200從該圖片的0,200像素開始取值
SRCAND 使用AND的方式加載
第4、5行,使用三元光柵操作實現透明貼圖
背景圖:

C++可視化角色按鍵移動控制的實現

掩碼圖:

C++可視化角色按鍵移動控制的實現

C++可視化角色按鍵移動控制的實現

4.接收用戶輸入的按鍵,并判斷輸入的是什么

  1. #include<conio.h> //控制臺輸入輸出
  2.  
  3. void keyDonw()
  4. {
  5. char choice = _getch();
  6. switch (choice)
  7. {
  8. case 'w':
  9. case 'W':
  10. case 72:
  11. break;
  12. case 's':
  13. case 'S':
  14. case 80:
  15. break;
  16. case 'a':
  17. case 'A':
  18. case 75:
  19. break;
  20. case 'd':
  21. case 'D':
  22. case 77:
  23. break;
  24. }
  25. }

需要添加一個頭文件,并接收用戶輸入的按鍵
接收 上下左右 四個方向鍵
使用switch()循環,判斷用戶輸入

5.當用戶按鍵后,執行相應功能

1.首先將main()函數中定義的一些變量提出來,作為全局變量
不然只有main()函數可以使用,別的函數使用不了
IMAGE background,role, roleY;

2.putimage(100, 500, 93,100,&roleY,0,200,SRCAND);
putimage(100, 500, 93,100,&role, 0,200,SRCPAINT );
putimage()函數中的,表示角色在窗口位置的參數,
會隨著用戶操作方向鍵改變因此不能再使用100,500
應該使用變量代替,如:int x;int y;

  1. case 'w':
  2. case 'W':
  3. case 72:
  4. putimage(0, 0, &background);
  5. putimage(x, y, 93, 100, &roleY, imageNum * 93, 300, SRCAND);
  6. putimage(x, y, 93, 100, &role, imageNum * 93, 300, SRCPAINT);
  7. imageNum++;
  8. y -= 5;
  9. if (imageNum == 4)
  10. imageNum = 0;
  11. break;

以按下向上箭頭為例:

  • 首先重新載入背景 putimage(0, 0, &background);
  • 其次將圖片顯示為角色像上
  • 用 imageNum記錄按下照片的次數
  • 由于每走一步角色會稍有變化,向上走的圖片共有四張,
  • 用每個角色的寬度X按下的次數
  • 使用if語句,當照片到第四張的時候,回到第一張
  • 將y軸減小5個像素,是人物向上移動

C++可視化角色按鍵移動控制的實現

6.添加個背景音樂BGM

將要使用的音樂,拷貝到項目所在文件夾
與.cpp文件處于同一文件夾

  1. #include<mmsystem.h> ////包含多媒體接口
  2. #pragma comment(lib,"winmm.lib")
  3. int main()
  4. {
  5. mciSendString("open 1.mp3 alias music", 0, 0, 0);//媒體控制接口函數
  6. mciSendString("play music repeat", 0, 0, 0);
  7. }

7.完整代碼

  1. #include<stdio.h> //用于標準輸入輸出
  2. #include<graphics.h> //用于圖形的函數庫
  3. #include<conio.h> //控制臺輸入輸出
  4. #include<mmsystem.h> //包含多媒體接口
  5. #pragma comment(lib,"winmm.lib")
  6.  
  7. IMAGE background,role, roleY;
  8. int x=100;
  9. int y=500;
  10. int imageNum = 0; //為照片計數,從0開始
  11. void keyDonw()
  12. {
  13. char choice = _getch();
  14. switch (choice)
  15. {
  16. case 'w':
  17. case 'W':
  18. case 72:
  19. putimage(0, 0, &background);
  20. putimage(x, y, 93, 100, &roleY, imageNum * 93, 300, SRCAND);
  21. putimage(x, y, 93, 100, &role, imageNum * 93, 300, SRCPAINT);
  22. imageNum++;
  23. y -= 5;
  24. if (imageNum == 4)
  25. imageNum = 0;
  26. break;
  27. case 's':
  28. case 'S':
  29. case 80:
  30. putimage(0, 0, &background);
  31. putimage(x, y, 93, 100, &roleY, 93 * imageNum, 0, SRCAND);
  32. putimage(x, y, 93, 100, &role, 93 * imageNum, 0, SRCPAINT);
  33. imageNum++;
  34. y += 5;
  35. if (imageNum == 4)
  36. imageNum = 0;
  37. break;
  38. case 'a':
  39. case 'A':
  40. case 75:
  41. putimage(0, 0, &background);
  42. putimage(x, y, 93, 100, &roleY, 93 * imageNum, 100, SRCAND);
  43. putimage(x, y, 93, 100, &role, 93 * imageNum, 100, SRCPAINT);
  44. imageNum++;
  45. x -= 5;
  46. if (imageNum == 4)
  47. imageNum = 0;
  48. break;
  49. case 'd':
  50. case 'D':
  51. case 77:
  52. putimage(0, 0, &background);
  53. putimage(x, y, 93, 100, &roleY, 93 * imageNum, 200, SRCAND);
  54. putimage(x, y, 93, 100, &role, 93 * imageNum, 200, SRCPAINT);
  55. imageNum++;
  56. x += 5;
  57. if (imageNum == 4)
  58. imageNum = 0;
  59. break;
  60. }
  61. }
  62.  
  63. int main()
  64. {
  65. initgraph(1440, 768); //創建一個窗口,大小設定為背景大小,以免圖片拉伸變形
  66. loadimage(&background, "background.bmp");
  67. //加載背景圖片
  68. putimage(0, 0, &background);
  69. loadimage(&role, "role.bmp" );
  70. loadimage(&roleY, "roleY.bmp");
  71. putimage(x, y, 93,100,&roleY,0,200,SRCAND);
  72. putimage(x, y, 93,100,&role, 0,200,SRCPAINT );
  73. mciSendString("open 1.mp3 alias music", 0, 0, 0);//媒體控制接口函數
  74. mciSendString("play music repeat", 0, 0, 0);
  75. while (true)
  76. {
  77. keyDonw();
  78. }
  79.  
  80. getchar(); //暫停,等待輸入任意字符
  81. closegraph();
  82. return 0;
  83. }

8.遇到的一些問題

VS中可能找不到頭文件<graphics.h>
安裝EasyX,素材中有

loadimage()函數,沒有與參數列表匹配的重載函數
右擊項目名稱,選擇“屬性”,點左側的“配置屬性”,在右側的設置中找到“字符集”,修改默認的“使用 Unicode 字符集”為“使用多字節字符集(即MBCS)”即可。

到此這篇關于C++可視化角色按鍵移動控制的實現的文章就介紹到這了,更多相關C++ 按鍵移動控制內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/weixin_43362751/article/details/104403715

延伸 · 閱讀

精彩推薦
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
主站蜘蛛池模板: 欧美日韩一区二区三区在线观看 | 中文字幕一区二区三 | 午夜寂寞少妇aaa片毛片 | 亚洲国产日韩欧美在线 | 国产精品99精品久久免费 | 国产伦精品一区二区三区四区视频 | 欧美久久久精品 | 国产乱码精品一区二区三区中文 | 色图自拍偷拍 | 999一个人免费看ww | 亚洲成人三级 | 黄色99| 国产高清在线精品 | 七七婷婷婷婷精品国产 | 久久大伊人 | 黄色国产在线视频 | 国产精品福利在线 | 天天精品 | 欧美成人黄色小视频 | 色九九| 亚洲第一成年人视频 | 一二三区字幕免费观看av | 国产高清视频一区二区 | 国产欧美精品一区二区三区 | 一区二区三区视频在线观看 | 49vv看片免费 | 精品国产鲁一鲁一区二区在线观看 | 久久精品| 蜜桃传媒一区二区 | 亚洲福利| 在线免费看黄 | 日韩视频一二 | 欧美三级视频 | 国产精品美女久久久久久久网站 | 亚洲精品在线播放视频 | 午夜免费小视频 | 精品国产一区二区三区av性色 | 日本三级韩国三级三级a级中文 | 欧美一区二区高清视频 | 久久精品国产99精品国产亚洲性色 | 亚洲精品久久久久久久久久久久久 |