以前話していた、非常に一般的であり、必ずしも誰もがすぐに慎重に非常に効果的なプログラムを準備するために皆のための小さなシリーズに続いて、オブジェクト指向の概念に統合しないと言うことができます。
Easyxライブラリーの中から、いくつかの機能を使用するには、まず、小さなシリーズ。Easyxライブラリのために、私は再び証明するために、以下の小さなシリーズを重要ではありません理解していません。
します。https:公式ウェブサイトをご覧ください//easyx.cn/downloads
ダウンロードライブラリは、そのコンパイラとの通信機能を有しています。
小扁コンパイラは、Visual Studio 2013、2014冬至Easyxライブラリのようにダウンロード版です。
あなたが抽出にファイルをダウンロードしたら、主な用途であっても、ファイルを含めるとlibすることです。
1、あなたのコンパイラVCフォルダ内のlibファイルに赤いボックス内のファイルをコピーするEasyxライブラリのlibフォルダ!
EasyxライブラリLIBファイルの下AMD64内の2、すべてのファイルと、あなたのAMD64のコンパイラVCフォルダにファイルをコピーします!
3.コピー二つのファイルEasyxライブラリコンパイラVCフォルダ内のファイルを含めるために、フォルダを含めます!
したがって、我々コンパイラは、いくつかのソース機能を追加しました、それはいくつかのグラフィック描画能力を必要とします。
知識、研究の唯一徐々に深さと存在する小さなシリーズでは、より多くの知識を習得していない、この章を書きましたが、言語の最初の接点C ++天才。
私たちは、あなたがステップ学習によってステップが落ち始めるでしょうので、ちょうど、黒い画面にあなたがC / C ++、スタートが混乱に巻き込まれる学んだに関係なく、いくつかの黒と白の体を再生することができるように使用されます最後に、あなたがこれらの使用に到達することは困難を行うことができますので、へ?
ジャンプのリズムを維持、今から、あなたの固定観念を破る、小さなシリーズは、過去にC / C ++の世界にすぐにあなたを聞かせて言うことはできませんが、少なくとも、小さなシリーズを言う、あなたはそれらの知識を適用することができます。混乱はありません!
自宅に近いです!
ここで友人を学んだ、私は少しゲームを書くことをお願いしたいと思いますか?最もシンプルで小さなゲームのマップと一緒にタイピングと小さなゲーム?あなたはすることはできません!
それはなぜでしょうか?
私たちが学ぶとき、単に壊れまず、知識はC / C ++を学ぶことは同等であり、実際には、それは間違って認識され、その結果、綿密なアプリケーションのスキルと接触したが、その科学と学習することはできませんので、思考のオフモード、実際には、あなただけの基本を学びます!ミッドレベルの技術者は、会社の研究に推定され、究極の技術は、独自の研究に依存しています!
空のC ++のプロジェクトファイルを作成するために、今のXiaobian。
Game.cpp
書式#include <iostreamの>
名前空間stdを使用。
int型のmain()
{
システム( "休止")。
0を返します。
}
、コードを書き、コンパイラを実行するコンパイラを防ぐため、最も基本的な操作である、実行するかどうかを確認するために、で開始しなければならなかった可能性それらをコンパイルすることはできません。
我々が開始する前に、我々はいくつかの準備作業を行う必要があり、1は映像、音楽、バックグラウンドを使用する必要があります...
音楽、そして彼の次の音楽プレーヤーは、あなたは自由です。
以下は、それが書かれる必要があるどのようなコードの端でそれを区別します提供されるゲームのコードを、いくつかの実用的なものを書き始めました。
まず自分のことを考え、その後、ダウンしています!
1、ゲームのインターフェイスは初期化されます
ゲームのBGMを追加します。
.......
2、ゲームを更新
ゲーム内で自分の業績我々は望むように実行されます
......
3、ゲームはゲームオン/オフです
おそらく、理解しにくいが、それは大丈夫だ、のは、徐々にステップアップあなたの意識に最も簡単な方法での書き込みにファーストクラスの方法、なしで、過去に学んだ知識を使ってみましょう。
関数を作成します:
空InitGame() { //グラフィカルなインターフェイスを作成します initgraph(600600); // 600は、前面の幅、高さが600であります //近いグラフィカルインターフェイス closegraph() }
もちろん、文を忘れてはいけません。InitGame()の呼び出しは、あなたのメインのソースファイルを下げる結果を確認するために実行します。
そして、ヘッドプラスヘッダーファイルで:Graphic.h
書式#include <graphics.h>
すべてはそれから始め、準備ができています。
IMAGE //私たちは、簡単に理解するために、このクラス、画像を使用する必要があるが、意味の絵である
3枚の写真の上に使用//、当然のことながら、必要性の3つのオブジェクトが格納された画像は、もちろん、名前は意味のある、背景、大根されるように1、大根2
画像背景、
画像LB1。
画像LB2。
//ロード画像リソース
//图片资源很重要,地理位置不对,同样无法绘制出来。
//小编用的是images这个文件夹,而图片都在此文件夹下,而images文件夹放在项目文件夹下源目录之中。
//我们创建的项目它会默认一个位置,你自己得把握下,别搞错了
第一个HitEnglish_FONT_Game代表项目文件夹,第二个才是摆放你所运行的文件夹。有不懂的每个地方都可以试试,然后跟着下面的代码试试,它运行的效果,一切都跟着编译器运行效果来看。
//初始化游戏
void InitGame()
{
IMAGE background;
IMAGE LB1;
IMAGE LB2;
loadimage(&background, "images//background.jpg", 600, 600);
loadimage(&LB1, "images//LB1.jpg", 50, 50);
loadimage(&LB2, "images//LB2.jpg", 50, 50);
}
先运行看看,看编译器有何变化。
是不是能看见我们设置的背景图片了,这就对了,如果不对,那说明你的图片摆放位置不对,自己在琢磨琢磨。到底放在哪,不懂的看上面图片。
loadimage(IMAGE 指针对象,"图片文件位置",图片宽度,图片高度);
putimage(界面左上角的x坐标,界面左上角的y坐标,IMAGE 指针对象); 我们不管如何看图形界面,不管你如何设置,它的左上角坐标永远都是从(0,0)开始的。
既然知道了用法,我们再将萝卜1和萝卜2的图片也加载下:
{ loadimage(&LB1, "images//LB1.jpg", 50, 50); //萝卜1图片 loadimage(&LB2, "images//LB2.jpg", 50, 50); //萝卜2图片 }
在这里,我们先想想看,为什么要用两张图,一张白色图背景,一张黑色图背景,请记住,或运算的规则:0|0=0; 0|1=1; 1|0=1; 1|1=1;说白了,白色遇见黑色,就是白色,那么白色是不是可以看成1,黑色即为0.
如果不懂就请搜索他人的博客,关于与、或、异或运算规则。
背景图既然有了,那我们是不是可以将罗卜也放入界面上呢。
能想到还是putimage(),这个萝卜1和萝卜2图片x和y的坐标必须是一致,因为只有这般,才能让它们或运算比较。
而且还要考虑:它们都是在一张界面上出现的,for循环就能实现,将它们放入界面上。记住,每个界面都可以用数组的方式加载到界面之上,因为目前,我们只接触过数组,现学现用就是你该做的。
{ ...
//同步
srand((unsigned int)time(NULL));
//获取萝卜1和罗卜2图的x坐标,它不可能超出界面的,因此用背景图宽度来限定
int i = rand() % background.getwidth();
for (j = 0; j < background.getheight(); j++) { //放在移动的图片前,保证刷新原图不变,不随着移动图片变化而变化 putimage(0, 0, &background); //将源矩形图象与目标矩形图象 putimage(i, j, &LB2, SRCAND); //将源矩形图象与目标矩形图象进行布尔"或"运算. putimage(i, j, &LB1, SRCPAINT); } ... }
这里为什么还要再加载背景图的原因就是为类防止它运行for()循环结束后黑屏,不信可以试试看,刷新的作用。
在这里,因为用到随机数机制,当然也要加上:
#include <time.h>
写好后,先运行看看,会是个什么效果。
完整的代码如下:
#include <graphics.h> #include <time.h> #include <iostream>
using namespace std;
//全局声明 void InitGame(); int main () { InitGame(); system("pause"); return 0; } void InitGame() { //保存图片的对象 IMAGE background, LB1, LB2; //同步 srand((unsigned int)time(NULL)); //载入图片 loadimage(&background,"images//background.jpg",600,600); loadimage(&LB1, "images//LB1.jpg", 50, 50); loadimage(&LB2, "images//LB2.jpg", 50, 50); //初始化界面的宽度和高度,在这里用background对象就能获取宽度和高度 initgraph(background.getwidth(), background.getheight());
int i = rand() % background.getwidth();
int j=0;
for (j = 0; j < background.getheight(); j++)
{
putimage(0, 0, &background);
putimage(i, j, &LB2, SRCAND);
putimage(i, j, &LB1, SRCPAINT);
}
}
看看运行效果先,是不是很激动,咱们用自己的双手敲出来个不一样的代码了。
下节课我们就圆满的完善代码的实现,试问:你今日是否有所进步呢?别好高骛远,一段代码那是需要付出了多少努力,想想吧。一步一个脚印,才能踏地更稳!