عندما كنت على وشك تعلم برمجة Javagui ، كتبت لعبة Goji صغيرة.
في الوقت الحالي ، تم تنفيذ إصدار مستقل فقط ، ويتم إنتاج كل شيء ببساطة. إذا كان لديك أي أسئلة ، فالرجاء إعطائي بعض النصائح.
قطع الشطرنج وشطرنج هنا ليست صورًا ، وكلها مرسومة باستخدام الرسومات في Java.
تم إرسال الرمز المصدر إلى Github ، انقر هنا إلى رمز المصدر Github
القائمة التالية لفئات شطرنج Gozi:
استيراد java.awt.borderlayout ؛ استيراد java.awt.color ؛ استيراد java.awt.container ؛ استيراد java.awt.graphics ؛ import java.awt.event.mouseevent javax.swing.joptionpane ؛ فئة FiveInarow العامة يمتد JFrame تنفذ mouselistener {vector v = new Vector () ؛ // جميع معلومات الشطرنج لكل خطوة متجه أبيض = جديد متجه () ؛ // White Chess Information Vector Black = New Vector () ؛ // معلومات الشطرنج السوداء Boolean B ؛ // تستخدم للحكم على ما إذا كانت العلم الأبيض أو الشطرنج الأسود int whitecount ، BlackCount ؛ // حساب عدد خطوات ندم الشطرنج int w = 25 ؛ // حجم التباعد int px = 100 ، py = 100 ؛ // حجم اللوحة int pxw = px + w ، pyw = py + w ؛ INT عرض = W * 16 ، الارتفاع = W * 16 ؛ int vline = width + px ؛ // طول الخط العمودي int hline = الارتفاع + py ؛ // طول الخط الأفقي/***طريقة البناء*/public FiveInarow () {super ("goji المستقلة") ؛ this.setDefaultCloseOperation (jframe.exit_on_close) ؛ // إغلاق زر حاوية con = this.getContentPane () ؛ ConsetLayout (New BorderLayout ()) ؛ this.addmouselistener (this) ؛ // إضافة مستمع this.setsize (600 ، 600) ؛ // اضبط حجم النموذج this.setbackground (color.orange) ؛ this.setVisible (صحيح) ؛ }/*** ارسم لوحة الشطرنج وقطع الشطرنج* param e*/public void paint (Graphics g) {g.clearrect (0 ، 0 ، this.getWidth () ، this.getheight ()) G.DrawString ("Gozi Mini Game المستقلة ، انقر بزر الماوس الأيمن للندم على الشطرنج ، مرحبًا بك للاستخدام" ، 180 ، 70) ؛ لـ (int i = 0 ؛ i <15 ؛ i ++) {g.drawline (pxw+i*w ، py ، pxw+i*w ، hline) ؛ // كل خط أفقي ورأسي g.drawline (px ، pyw+i*w ، vline ، pyw+i*w) ؛ } لـ (int x = 0 ؛ x <v.size () ؛ x ++) {string str = (string) v.get (x) ؛ سلسلة tmp [] = str.split ("-") ؛ int a = integer.parseint (tmp [0]) ؛ int b = integer.parseint (tmp [1]) ؛ a = a * w + px ؛ B = B * W + Py ؛ if (x ٪ 2 == 0) {g.setColor (color.white) ؛ } آخر {g.setColor (color.black) ؛ } g.fillarc (aw/2 ، bw/2 ، w ، w ، 0 ، 360) ؛ }} Override public void mouseclicked (mouseevent e) {if ( int y = e.gety () ؛ x = (x - x ٪ w) + (x ٪ w> w / 2؟ w: 0) ؛ y = (y - y ٪ w) + (y ٪ w> w / 2؟ w: 0) ؛ x = (x - px) / w ؛ y = (y - py) / w ؛ if (x> = 0 && y> = 0 && x <= 16 && y <= 16) {if (v.contains (x+"-"+y)) {system.out.println ("هناك بالفعل لعبة الشطرنج!") ؛ } آخر {v.add (x+"-"+y) ؛ this.repaint () ؛ if (v.size () ٪ 2 == 0) {Black.add (x+"-"+y) ؛ this.victory (x ، y ، Black) ؛ // system.out.println ("Black Chess") ؛ } آخر {white.add (x+"-"+y) ؛ this.victory (x ، y ، white) ؛ // system.out.println ("White Chess") ؛ } // system.out.println (E.GetX ()+"-"+E.Gety ()) ؛ }} else {// system.out.println ( }} if ( if (v.isempty ()) {joptionpane.showmessagedialog (هذا ، "لا يوجد شطرنج للأسف") ؛ } else {if (v.size () ٪ 2 == 0) {// judge ما إذا كانت لعبة الشطرنج البيضاء تندم على الشطرنج ، أو تأسف على الشطرنج الأسود مع الشطرنج BlackCount ++ ؛ if (BlackCount> 3) {joptionpane.showmessagedialog (هذا ، "Black Chess قد أسف 3 خطوات") ؛ } آخر {v.remove (v.lastelement ()) ؛ this.repaint () ؛ }} آخر {whitecount ++ ؛ if (whitecount> 3) {joptionpane.showmessagedialog (هذا ، "Black Chess قد أسف 3 خطوات") ؛ } آخر {v.remove (v.lastelement ()) ؛ this.repaint () ؛ }}}}}}} / ** * طريقة للحكم على النصر * param x * param y * param يحتوي على * / private void Victory (int x ، int y ، vector يحتوي على) {int cv = 0 ؛ // عدد قطع الشطرنج في الاتجاه العمودي int ch = 0 ؛ // عدد قطع الشطرنج الأفقية int ci1 = 0 ؛ // عدد قطع الشطرنج في اتجاه المنحدر 1 int ci2 = 0 ؛ // عدد قطع الشطرنج في اتجاه المنحدر 2 // احسب عدد قطع الشطرنج في الاتجاه الأفقي لـ (int i = 1 ؛ i <5 ؛ i ++) {if (invent.contains ((x+i)+"-"+y)) {ch ++ ؛ } آخر {break ؛ }} لـ (int i = 1 ؛ i <5 ؛ i ++) {if (invent.contains ((xi)+"-"+y)) {ch ++ ؛ } آخر {break ؛ }} // حساب عدد قطع الشطرنج في الاتجاه العمودي لـ (int i = 1 ؛ i <5 ؛ i ++) {if (contain.contains (x+"-"+(y+i))) {cv ++ ؛ } آخر {break ؛ }} لـ (int i = 1 ؛ i <5 ؛ i ++) {if (invent.contains (x+"-"+(yi))) {cv ++ ؛ } آخر {break ؛ }} // حساب عدد قطع الشطرنج في الاتجاه المائل 45 درجة لـ (int i = 1 ؛ i <5 ؛ i ++) {if (contain.contains ((x+i)+"-"+(y+i))) {ci1 ++ ؛ } آخر {break ؛ }} لـ (int i = 1 ؛ i <5 ؛ i ++) {if (invent.contains ((xi)+"-"+(yi))) {ci1 ++ ؛ } آخر {break ؛ }} // احسب عدد قطع الشطرنج في اتجاه الميل 135 درجة لـ (int i = 1 ؛ i <5 ؛ i ++) {if (contain.contains ((x+i)+"-"+(yi))) {ci2 ++ ؛ } آخر {break ؛ }} لـ (int i = 1 ؛ i <5 ؛ i ++) {if (invent.contains ((x+i)+"-"+(yi))) {ci2 ++ ؛ } آخر {break ؛ }} لـ (int i = 1 ؛ i <5 ؛ i ++) {if (contain.contains ((xi)+"-"+(y+i))) {ci2 ++ ؛ } آخر {break ؛ }} if (ch> = 4 || cv> = 4 || ci1> = 4 || ci2> = 4) {system.out.println (v.size ()+"step") ؛ if (v.size () ٪ 2 == 0) {// judge ما إذا كان أسود أو أبيض للفوز joptionpane.showmessagedialog (null ، "Black") ؛ } آخر {joptionpane.showmessagedialog (null ، "white") ؛ } this.v.clear () ؛ this.black.clear () ؛ this.white.clear () ؛ this.repaint () ؛ }} Override public void mouseentered (mouseevent e) {// todo method method muse} override public void mouseexited (mouseevent e) {// to to todo method method ext} mousepressed (mouseevent e) {// todo method method method exto} override public void mouserelest (mouseevent e) {// todo tuto method method}}}ملاحظة: أخطط لكتابة نسخة أخرى عبر الإنترنت من Goji ، لكن للأسف لا أعرف الكثير عن الإنترنت في Java. يجب أن أدرس لفترة من الوقت قبل الاستمرار في إكماله واختبار نتائج التعلم الشخصية.
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.