báo cáo đồ họa máy tính rất hay và hữu ích
TRƯỜNG ĐẠI HỌC XÂY DỰNG KHOA CNTT – BỘ MÔN CÔNG NGHỆ PHẦN MỀM -------------------------------------------- ĐỒ ÁN: ĐỒ HỌA MÁY TÍNH 2 GIÁO VIÊN: PHAN THÁI TRUNG SINH VIÊN: NGUYỄN HỒNG GIANG MS: 4228.51 LỚP 51PM1 HÀ NỘI, 11/2009 Đồ Án Đồ Họa 2 2009 3 Nguyễn Hồng Giang – 4228.51 – Lớp 51PM1 http://www.ebook.edu.vn Mục Lục Mở Đầu 3 Quy trình thực hiện 4 Bước 1. Thay nhân vật. 4 Bước 2. Thay Map. 8 Bước 3. Thay và thêm Enemy. 11 Bước 4. Lưu điểm. . 14 Bước 5. Preloader. . 16 Bước 7. Pause / un-Pause. . 17 Website đồ án 18 Mở Đầu Đồ họa máy tính 2 mang đến cho sinh viên những kiến thức về lập trình 3d, làm game trên các nền tảng. Đồ án đồ họa 2, chúng em chọn làm một game flash nhỏ dựa trên platform game có sẵn. Qua quá trình làm đồ án, chúng em đã học hỏi được thêm kiến thức về lập trình action scripts trong flash. Website: http://nguyenhonggiang.it-uce.com 4 Quy t Bước 1 Nhân v Lập trìn onClip j / s h / s s h s / s X Y m i } onCli p i i 4 Nguyễn trình thự 1. Thay n vật trong pl nh cho nhâ pEvent (l jumping = // jumpin speed = 0 healthX = //sets he scoreX = scoreY = healthY = skyX = r //sets sc skyY = r Xpos = th Ypos = th maxmove = ispaused root.ma x pEvent (e if (Key.i if( } e } } if ( root if } Hồng Gian ực hiện hân vật. atform có s ân vật: oad) { = false; ng is tru 0; = root.h ealthX to root.sc root.sc = root.h root.sky. coreX to root.sky. his. x; his. y; = 15; = false; xshoottim nterFrame isDown(11 ispaused= root. ispau s lse { root. ispau s t. pause= (this. y root. ng – 4228.5 sẵn được th ue health. x o the sta core. x; core. y; health. y x; the star y; me = 60; e) { 12) || Ke ==true) { pause = sed = fal pause sed = tru ==false) > Stage . health.t 51 – Lớp 5 hay bằng m ; rting X p ; ting X p o y.isDown { false; se; = true; e; { .height + ext = 0; Đồ 51PM1 một nhân vậ postition ostition (80)) { + 100) { Án Đồ H http:// ật mới. n of the of the " Họa 2 /www.eboo "health" score" M 2009 ok.edu.vn MC C Đồ Án Đồ Họa 2 2009 5 Nguyễn Hồng Giang – 4228.51 – Lớp 51PM1 http://www.ebook.edu.vn if (_root.health.text == 0) { _root.dead=true; } _x = Xpos-_root._x; //sets the X pos to the starting X postition of this MC _root.score._x = scoreX-_root._x; _root.score._y = scoreY-_root._y; _root.sky._x = skyX - _root._x; _root.sky._y = skyY - _root._y; //sets the scire MCs X pos to its starting point on the screen _root.health._x = healthX-_root._x; _root.health._y = healthY-_root._y; //sets the health MCs X pos to its starting point on the screen if (!_root.ground.hitTest(this._x, this._y, true) && !jumping) { // if NOT hitting X and Y postion with the ground and NOT jumping this._y += 6; // Y positon moves up 6 } _global.tongdiem = _root.score.text; if (!_root.shooting) { // if _root.shooting is false _root.timer = 0; // _root.timer is set to 0 _root.mvsp = _xscale/20; // _root.mvsp is set to the chars xscale divided by 20 // the answer to this is the speed of the bullets } //if (this._y > Stage.height + 100) { //_root.stop(); //_root.gotoAndStop("loser"); //} if (_root.dead) { stopAllSounds(); var atDie = new Sound(); atDie.attachSound("charDie"); atDie.start(0, 1); this.gotoAndStop("dead"); _root.health.text = 100; } else { speed *= .85; if (dir == "right") { _root.health._x += speed; // moves the health, the opposite way to the _root _root.score._x += speed; // moves the score, the opposite way to the _root this._x += speed; // moves the char, the opposite way to the _root _root._x -= speed; // moves the _root _root.tree._x += 0.7*speed; } Đồ Án Đồ Họa 2 2009 6 Nguyễn Hồng Giang – 4228.51 – Lớp 51PM1 http://www.ebook.edu.vn if (speed>0) { //if speed is smaller than 0 dir = "right"; // the variable dir is set to right } else if (speed<0) { //if speed is greater than 0 dir = "left"; // the var dir is set to left } if (dir == "left" && !_root.cotmoc.hitTest(this._x-20, this._y, true)) { _root.health._x += speed; _root.score._x += speed; this._x += speed; _root._x -= speed; _root.tree._x += 0.7*speed; } if (Key.isDown(Key.LEFT)) { // if left is pressed if (speed>-maxmove) { // if the speed is greater than neg. maxmove speed--; // speed goes lower } this.gotoAndStop("run"); this._xscale = -100; } else if (Key.isDown(Key.RIGHT)) { if (speed<maxmove) { // if the speed is smaller than maxmove speed++; // speed goes up } this._xscale = 100; this.gotoAndStop("run"); } else if (Key.isDown(Key.CONTROL)) { this.gotoAndStop("attack"); attacking = true; speed = 0; } else if (Key.isDown(Key.SPACE)) { if (_root.gotgun == true && !_root.shooting) { _root.attachMovie("bullet", "bulleter", 1, {_x:_root.char._x, _y:_root.char._y-25}); var _banAT = new Sound(); _banAT.attachSound("sound8"); _banAT.start(0, true); // attach the movie with the Linkage name "bullet" to the _root at the character X position and the Y position minus 25 _root.shooting = true; // _root.shooting is set true with (_root.bulleter) { // all code below this code and it's closer refer to _root.bulleter Đồ Án Đồ Họa 2 2009 7 Nguyễn Hồng Giang – 4228.51 – Lớp 51PM1 http://www.ebook.edu.vn onEnterFrame = function () { if (_root.timer>_root.maxshoottime) { // if _root.timer is smaller than _root.maxshoottime _root.shooting = false; // shooting is false unloadMovie(this); // this movie clip is unloaded } _root.timer+=5; // _root.timer goes up 1 _x += _root.mvsp*5; // the X goes up _root.mvsp (which is set constantly and stays the same when shooting.) }; }; } attacking = true; // attacking is true speed = 0; // speed is set to 0 this.gotoAndStop("shoot"); // goto and stop on the shoot frame } } else if (speed<1 && speed>-1 && !attacking) { // if speed is smaller than one and greater than neg. 1 speed = 0; // speed is set to 0 this.gotoAndStop("idle"); // gotoAndStop the idle frame } if (Key.isDown(Key.UP) && !jumping) { // if up is pressed and NOT jumping jumping = true; // jumping is set true } if (jumping) { // if jumping is true this.gotoAndStop("jump"); this._y -= jump; _root._y += 0.2 * jump; // Y position is set down jump jump -= .5; // jump is set down .5 if (jump<0) { // if jump is smaller than 0 falling = true; // falling is true } if (jump<-15) { // if jump is smaller than neg. 5 jump = -15; // jump is set to neg 5 Đồ Án Đồ Họa 2 2009 8 Nguyễn Hồng Giang – 4228.51 – Lớp 51PM1 http://www.ebook.edu.vn // capping fall speeds prevents falling through grounds } } if (_root.ground.hitTest(this._x, this._y, true) && falling) { // if hitting X an Y postions with the ground and falling jump = 12; // jump is set to 9 jumping = false; // jumping is false falling = false; gotoAndStop("idle"); // falling is false } } } } onClipEvent (keyUp) { // on Key Up if (Key.getCode() == Key.CONTROL) { // if the release is control attacking = false; // attacking is false } if (Key.getCode() == Key.SPACE) { gotoAndStop("idle"); } if (Key.getCode() == Key.RIGHT) { gotoAndStop("idle"); } if (Key.getCode() == Key.LEFT) { gotoAndStop("idle"); } } Bước 2. Thay Map. Thay map có sẵn, thêm những chi tiết : cây, cảnh nền để làm cho game sinh động hơn. 9 9 Nguyễn Hồng Gianng – 4228.551 – Lớp 5 Đồ 51PM1 Án Đồ H http:// Họa 2 /www.eboo 2009 ok.edu.vn 10 Cột m ố Đặt tên không đ if (di { t } Thanh n bờ bên 0 Nguyễn ốc ngăn khô n cho movie đi được nữ ir == "le root.he a root.sco this. x + root. x root.tr e ngang chuy kia. Hồng Gian ông cho đi e này là cot ữa. ft" && ! alth. x + ore. x += += speed; -= spee d ee. x += yển động lê ng – 4228.5 tiếp có tác tmoc và kh root.cot += speed; = speed; d; 0.7*spee ên xuống g 51 – Lớp 5 dụng khóa hi nhân vật tmoc.hitT d; giúp nhân v Đồ 51PM1 a lại map. chạm vào Test(this vật có thể n Án Đồ H http:// tức là hitT . x-20, t nhảy từ bên Họa 2 /www.eboo Test thì nhân this. y, n bờ bên nà 2009 ok.edu.vn n vật sẽ true)) ày sang 11 Để nh â và nhân onClip d u d } onCli p i root. i root. i i } Bước 3 Enemy Loại 1 : Loại 2 : 1 Nguyễn ân vật khi đ n vật. Nếu h pEvent(lo dir = "up upstep = downstep pEvent(en if(dir==" ups thi if char. y } if(dir==" dow thi if char. y } if(upstep ups dir } if(downst dow dir } 3. Thay và có 3 loại: : bắn một p : loại này k Hồng Gian đứng trên th hitTest thì oad) { p"; 0; = 0; nterFrame "up") { tep--; s. y += - (this.hit += -2; "down") { nstep++; s. y += 2 (this.hit += 2; p == -100 tep = 0; = "down tep == 10 nstep = 0 = "up"; à thêm En phát là chết khởi tạo cho ng – 4228.5 hanh ngang di chuyển ) { -2; tTest( ro 2; tTest( ro 0) { "; 00) { 0; nemy. t. o chúng 50 51 – Lớp 5 g không bị r tung độ củ oot.char. oot.char. 0 máu và m Đồ 51PM1 rơi, ta sẽ k ủa nhân vật x, roo x, roo mỗi lần hitT Án Đồ H http:// iểm tra hitT theo. t.char. y t.char. y Test với viê Họa 2 /www.eboo Test của ch y, true)) y, true)) n đạn mất 2009 ok.edu.vn hính nó 2 máu. [...]... roo ot.char.gotoAndSto op("idle" "); ng 51 51PM1 17 Nguyễn Hồng Gian – 4228.5 – Lớp 5 7 http:// /www.eboo ok.edu.vn Đồ Án Đồ H 2 2009 Họa } if (Ke ey.isDown n(111) || Key.isDo own(79)) root pause = fa alse; Nếu nh phím p hoặc P : pa hấn ause, Nhấn p phím o hoặc O: un pau c use Webs đồ án site n Địa chỉ http://ngu ỉ: uyenhongg giang.it-uce e.com THE END D - ng 51 51PM1 18 Nguyễn Hồng Gian... // roo ot.health.text = 0 0; // ro oot.dead is set tr rue } if (!dead) { // if NOT dead if (en nemydir == "right" { ") ng 51 51PM1 12 Nguyễn Hồng Gian – 4228.5 – Lớp 5 2 http:// /www.eboo ok.edu.vn Đồ Án Đồ Họa 2 2009 enemystepsright += 1; this._xscale = -100; this._x += enemyspeed; } else if (enemydir == "left") { enemystepsleft += 1; this._xscale = 100; this._x -= enemyspeed; } if (enemystepsright... = "left"; } else if (enemystepsleft == 100) { enemystepsleft = 0; // enemystepsleft is set to 0 enemydir = "right"; } } } } 13 Nguyễn Hồng Giang – 4228.51 – Lớp 51PM1 http://www.ebook.edu.vn Đồ Án Đồ H 2 2009 Họa : giống loại 2 nhưng có 100 máu ó Loại 3: Loại này g onClip pEvent (load) { enemyspee = 2; e ed enemystep e psright = 0; enemystep e psleft = 0; enemydir = "left" e "; dead = fa d alse; mau... với các g ết game flash Để lưu điểm thì bạn có thể n sử dụng PHP & M g MySQL hoặ PHP lưu vào file tx ặc u xt,… ng 51 51PM1 14 Nguyễn Hồng Gian – 4228.5 – Lớp 5 4 http:// /www.eboo ok.edu.vn Đồ Án Đồ H 2 2009 Họa ột lip able ác c ext điểm Tạo mộ movie cl scoreTa chứa cá dynamic text Các dynamic te tên và đ được đặ tên NAM ặt ME0-NAM và SCO ME9 ORE0-SCO ORE9 Tại fram high score, ta viết đoạn code sau:... "score es.txt"; scoreTable.s scoresize = 10; e scoreTable.a action = "INSERT"; scoreTable.w winname = root.t tenBan; ng 51 51PM1 15 Nguyễn Hồng Gian – 4228.5 – Lớp 5 5 http:// /www.eboo ok.edu.vn Đồ Án Đồ H 2 2009 Họa scoreTable.w winscore = globa al.tongdiem; scoreTable.l loadVaria ables("ht ttp://nguy yenhonggi iang.ituce.co om/scores.php", "G GET"); global.luu = true; } } Lưu điể khi bạn thua ểm n Cũng... game h flash củ bạn có t được ha không L đó prebiết hay ủa tải ay Lúc -loader sẽ l tan làm biến đi sự nghi ng đó gờ ng 51 51PM1 16 Nguyễn Hồng Gian – 4228.5 – Lớp 5 6 http:// /www.eboo ok.edu.vn Đồ Án Đồ H 2 2009 Họa onClip pEvent(lo oad) { this.prel t loaderBar xscale = 1; r this.text t tLoader.t text = 0 + "%"; root.sto op(); } onClip pEvent(en nterFrame) { var loade = roo v ed ot.getBytesLoaded(); var.. .Đồ Án Đồ H 2 2009 Họa onClip pEvent (load) { enemyspee = 2; e ed enemystep e psright = 0; enemystep e psleft = 0; enemydir = "left" e "; dead = fa d alse; mau = 50; m ; } onClip pEvent (enterFrame { e) if i (Key.i . -------------------------------------------- ĐỒ ÁN: ĐỒ HỌA MÁY TÍNH 2 GIÁO VIÊN: PHAN THÁI TRUNG SINH VIÊN: NGUYỄN HỒNG GIANG MS: 4228.51 LỚP 51PM1 HÀ NỘI, 11/2009 Đồ Án Đồ Họa 2 2009. Website đồ án 18 Mở Đầu Đồ họa máy tính