當前位置:首頁 » 背景圖片 » 五子棋背景圖片
擴展閱讀
手機可以下載微信的圖片 2024-12-23 14:58:35
畫畫圖片大全花朵 2024-12-23 14:57:40

五子棋背景圖片

發布時間: 2022-01-08 12:31:32

Ⅰ 求一幅用圍棋或五子棋擺出的太極圖

如下圖所示。

圍棋,一種策略型兩人棋類游戲,中國古時稱「弈」,西方名稱「Go」。流行於東亞國家(中、日、韓、朝),屬琴棋書畫四藝之一。

圍棋起源於中國,傳為帝堯所作,春秋戰國時期即有記載。隋唐時經朝鮮傳入日本,流傳到歐美各國。圍棋蘊含著中華文化的豐富內涵,它是中國文化與文明的體現。

圍棋,起源於中國,中國古代稱為「弈」,可以說是棋類之鼻祖,圍棋至今已有4000多年的歷史。據先秦典籍《世本》記載:「堯造圍棋,丹朱善之。」晉張華在《博物志》中繼承並發展了這種說法:「堯造圍棋,以教子丹朱。若白:舜以子商均愚,故作圍棋以教之。」

中國圍棋之制在歷史上曾發生過兩次重要變化,主要是在於局道的增多。魏晉前後,是第一次發生重要變化的時期。魏邯鄲淳的《藝經》上說,魏晉及其以前的「棋局縱橫十七道,合二百八十九道,白、黑棋子各一百五十枚」。

這與前面所介紹的河北望都發現的東漢圍棋局的局制完全相同。但是,在甘肅敦煌莫高窟石室發現的南北朝時期的《棋經》卻載明當時的圍棋棋局是「三百六十一道,仿周天之度數」,表明這時已流行19道的圍棋了。這與棋局形制完全相同,反映出當時的圍棋已初步具備現圍棋定製。

Ⅱ 怎樣在MFC五子棋程序中加入背景圖

利用已有的C++基礎,結合對MFC的學習,進行窗口化設計。由於MFC提供了MFCppWizard自動生成框架。使得簡單的編程更加簡單,界面簡潔。
這次用MFC設計了一個簡單的五子棋游戲。可以進行簡單的雙人對戰。目的在於更加熟悉MFC的使用來完成游戲的製作。再此期間,搜集大量信息,以及函數的源代碼。不斷進行整合,進行函數構造。
2主要功能
MFC的窗口更適合小型游戲的界面。五子棋可以說是再簡單不過的小游戲了,不過其中確包含了大量的函數實現游戲的正常運轉。
若要是游戲順利進行,必須要有程序約束游戲規則。因此本游戲要解決,棋子所放位置的判斷,棋子顏色的區分,以及玩家的輸贏。解決這些問題,玩家便可以進行一場二人大戰了。
3. 設計過程中的經驗與教訓
本次游戲設計,所遇到的阻力比較大。經過多次返工。多次函數未能定義或實現。整個設計過程所學的東西也很多。以五子棋游戲為例。首先要知道其基本規則,並設法用不同的函數來解決規則的限定。設計過程中常常會出現函數已經構造,卻未加定義的情況。做本游戲時,查看了大量資料。在棋盤的畫法上有所糾結。是直接將棋盤背景圖直接加入還是調用函數進行棋盤繪制都是要考慮的。
經過多次嘗試,不斷進行函數的調試和界面圖標的設計。最終完成此次實驗。雖然多次返工,雖然有一天從早上做到第二天凌晨5點,但最終的成功,使這些都變成浮雲。不斷嘗試,永不放棄,最終一定成功。
4. 自己收獲與不足
此次實驗初期,本計劃完成一個比較優秀的作品,但最終多種原因沒有達到預期理想的界面。首先談談收獲,個人認為此次MFC課程設計更適合簡單游戲的設計。五子棋的界面簡單,相對規則也不多。設計過程中,最大的收獲要算程序的擴充,函數的調試。其實MFC已給出框架,所要做的便是填充內容。懂得了以點陣圖的形式表示棋子,以cusor替換當前滑鼠。還有滑鼠熱點的設置。在BOOL CMainFrame下構造函數以坐標的形式以改變棋盤大小。同時構造出一系列畫棋盤,判斷滑鼠,判斷輸贏等函數。為函數添加數據成員並使其一一實現。對相應菜單進行屬性更改並進行消息映射,建立響應函數。整個過程都得到了了解及應用。
同時,不足也很多,本游戲調用函數進行了棋盤繪制,使得界面過於簡單。由於時間,能力等問題,未能加入人工智慧實現人機對戰。而且對於老師所給出的對話框的設計及應用也未能加入。棋子的點陣圖都是自己繪制,並不十分美觀。

Ⅲ 畫面好的五子棋軟體

有一款軟體叫做「五子棋高手」,但是棋力不怎麼地,畫面卻還不錯,棋力強的公認的就是「黑石」和「五子棋大師」了,畫面一般般,但也不差

Ⅳ java的背景圖片設置問題:關於graphics問題 設置一個五子棋窗體,然後加入背景圖片,但是效果卻是透明的

package org.liky.game.frame;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JOptionPane;

public class FiveChessFrame extends JFrame implements MouseListener, Runnable {

// 取得屏幕的寬度
int width = Toolkit.getDefaultToolkit().getScreenSize().width;
// 取得屏幕的高度
int height = Toolkit.getDefaultToolkit().getScreenSize().height;
// 背景圖片
BufferedImage bgImage = null;
// 保存棋子的坐標
int x = 0;
int y = 0;
// 保存之前下過的全部棋子的坐標
// 其中數據內容 0: 表示這個點並沒有棋子, 1: 表示這個點是黑子, 2:表示這個點是白子
int[][] allChess = new int[19][19];
// 標識當前應該黑棋還是白棋下下一步
boolean isBlack = true;
// 標識當前游戲是否可以繼續
boolean canPlay = true;
// 保存顯示的提示信息
String message = "黑方先行";
// 保存最多擁有多少時間(秒)
int maxTime = 0;
// 做倒計時的線程類
Thread t = new Thread(this);
// 保存黑方與白方的剩餘時間
int blackTime = 0;
int whiteTime = 0;
// 保存雙方剩餘時間的顯示信息
String blackMessage = "無限制";
String whiteMessage = "無限制";

public FiveChessFrame() {
// 設置標題
this.setTitle("五子棋");
// 設置窗體大小
this.setSize(500, 500);
// 設置窗體出現位置
this.setLocation((width - 500) / 2, (height - 500) / 2);
// 將窗體設置為大小不可改變
this.setResizable(false);
// 將窗體的關閉方式設置為默認關閉後程序結束
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 為窗體加入監聽器
this.addMouseListener(this);
// 將窗體顯示出來
this.setVisible(true);

t.start();
t.suspend();

// 刷新屏幕,防止開始游戲時出現無法顯示的情況.
this.repaint();
String imagePath = "" ;
try {
imagePath = System.getProperty("user.dir")+"/bin/image/background.jpg" ;
bgImage = ImageIO.read(new File(imagePath.replaceAll("\\\\", "/")));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public void paint(Graphics g) {
// 雙緩沖技術防止屏幕閃爍
BufferedImage bi = new BufferedImage(500, 500,
BufferedImage.TYPE_INT_RGB);
Graphics g2 = bi.createGraphics();
g2.setColor(Color.BLACK);
// 繪制背景
g2.drawImage(bgImage, 1, 20, this);
// 輸出標題信息
g2.setFont(new Font("黑體", Font.BOLD, 20));
g2.drawString("游戲信息:" + message, 130, 60);
// 輸出時間信息
g2.setFont(new Font("宋體", 0, 14));
g2.drawString("黑方時間:" + blackMessage, 30, 470);
g2.drawString("白方時間:" + whiteMessage, 260, 470);

// 繪制棋盤
for (int i = 0; i < 19; i++) {
g2.drawLine(10, 70 + 20 * i, 370, 70 + 20 * i);
g2.drawLine(10 + 20 * i, 70, 10 + 20 * i, 430);
}

// 標注點位
g2.fillOval(68, 128, 4, 4);
g2.fillOval(308, 128, 4, 4);
g2.fillOval(308, 368, 4, 4);
g2.fillOval(68, 368, 4, 4);
g2.fillOval(308, 248, 4, 4);
g2.fillOval(188, 128, 4, 4);
g2.fillOval(68, 248, 4, 4);
g2.fillOval(188, 368, 4, 4);
g2.fillOval(188, 248, 4, 4);

/*
* //繪制棋子 x = (x - 10) / 20 * 20 + 10 ; y = (y - 70) / 20 * 20 + 70 ;
* //黑子 g.fillOval(x - 7, y - 7, 14, 14); //白子 g.setColor(Color.WHITE) ;
* g.fillOval(x - 7, y - 7, 14, 14); g.setColor(Color.BLACK) ;
* g.drawOval(x - 7, y - 7, 14, 14);
*/

// 繪制全部棋子
for (int i = 0; i < 19; i++) {
for (int j = 0; j < 19; j++) {
if (allChess[i][j] == 1) {
// 黑子
int tempX = i * 20 + 10;
int tempY = j * 20 + 70;
g2.fillOval(tempX - 7, tempY - 7, 14, 14);
}
if (allChess[i][j] == 2) {
// 白子
int tempX = i * 20 + 10;
int tempY = j * 20 + 70;
g2.setColor(Color.WHITE);
g2.fillOval(tempX - 7, tempY - 7, 14, 14);
g2.setColor(Color.BLACK);
g2.drawOval(tempX - 7, tempY - 7, 14, 14);
}
}
}
g.drawImage(bi, 0, 0, this);
}

public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub

}

public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub

}

public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub

}

public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
/*
* System.out.println("X:"+e.getX()); System.out.println("Y:"+e.getY());
*/
if (canPlay == true) {
x = e.getX();
y = e.getY();
if (x >= 10 && x <= 370 && y >= 70 && y <= 430) {
x = (x - 10) / 20;
y = (y - 70) / 20;
if (allChess[x][y] == 0) {
// 判斷當前要下的是什麼顏色的棋子
if (isBlack == true) {
allChess[x][y] = 1;
isBlack = false;
message = "輪到白方";
} else {
allChess[x][y] = 2;
isBlack = true;
message = "輪到黑方";
}
// 判斷這個棋子是否和其他的棋子連成5連,即判斷游戲是否結束
boolean winFlag = this.checkWin();
if (winFlag == true) {
JOptionPane.showMessageDialog(this, "游戲結束,"
+ (allChess[x][y] == 1 ? "黑方" : "白方") + "獲勝!");
canPlay = false;
}
} else {
JOptionPane.showMessageDialog(this, "當前位置已經有棋子,請重新落子!");
}
this.repaint();
}
}
/* System.out.println(e.getX() + " -- " + e.getY()); */
// 點擊 開始游戲 按鈕
if (e.getX() >= 400 && e.getX() <= 470 && e.getY() >= 70
&& e.getY() <= 100) {
int result = JOptionPane.showConfirmDialog(this, "是否重新開始游戲?");
if (result == 0) {
// 現在重新開始游戲
// 重新開始所要做的操作: 1)把棋盤清空,allChess這個數組中全部數據歸0.
// 2) 將 游戲信息: 的顯示改回到開始位置
// 3) 將下一步下棋的改為黑方
for (int i = 0; i < 19; i++) {
for (int j = 0; j < 19; j++) {
allChess[i][j] = 0;
}
}
// 另一種方式 allChess = new int[19][19];
message = "黑方先行";
isBlack = true;
blackTime = maxTime;
whiteTime = maxTime;
if (maxTime > 0) {
blackMessage = maxTime / 3600 + ":"
+ (maxTime / 60 - maxTime / 3600 * 60) + ":"
+ (maxTime - maxTime / 60 * 60);
whiteMessage = maxTime / 3600 + ":"
+ (maxTime / 60 - maxTime / 3600 * 60) + ":"
+ (maxTime - maxTime / 60 * 60);
t.resume();
} else {
blackMessage = "無限制";
whiteMessage = "無限制";
}
this.canPlay = true;
this.repaint();

}
}
// 點擊 游戲設置 按鈕
if (e.getX() >= 400 && e.getX() <= 470 && e.getY() >= 120
&& e.getY() <= 150) {
String input = JOptionPane
.showInputDialog("請輸入游戲的最大時間(單位:分鍾),如果輸入0,表示沒有時間限制:");
try {
maxTime = Integer.parseInt(input) * 60;
if (maxTime < 0) {
JOptionPane.showMessageDialog(this, "請輸入正確信息,不允許輸入負數!");
}
if (maxTime == 0) {
int result = JOptionPane.showConfirmDialog(this,
"設置完成,是否重新開始游戲?");
if (result == 0) {
for (int i = 0; i < 19; i++) {
for (int j = 0; j < 19; j++) {
allChess[i][j] = 0;
}
}
// 另一種方式 allChess = new int[19][19];
message = "黑方先行";
isBlack = true;
blackTime = maxTime;
whiteTime = maxTime;
blackMessage = "無限制";
whiteMessage = "無限制";
this.canPlay = true;
this.repaint();
}
}
if (maxTime > 0) {
int result = JOptionPane.showConfirmDialog(this,
"設置完成,是否重新開始游戲?");
if (result == 0) {
for (int i = 0; i < 19; i++) {
for (int j = 0; j < 19; j++) {
allChess[i][j] = 0;
}
}
// 另一種方式 allChess = new int[19][19];
message = "黑方先行";
isBlack = true;
blackTime = maxTime;
whiteTime = maxTime;
blackMessage = maxTime / 3600 + ":"
+ (maxTime / 60 - maxTime / 3600 * 60) + ":"
+ (maxTime - maxTime / 60 * 60);
whiteMessage = maxTime / 3600 + ":"
+ (maxTime / 60 - maxTime / 3600 * 60) + ":"
+ (maxTime - maxTime / 60 * 60);
t.resume();
this.canPlay = true;
this.repaint();
}
}
} catch (NumberFormatException e1) {
// TODO Auto-generated catch block
JOptionPane.showMessageDialog(this, "請正確輸入信息!");
}
}
// 點擊 游戲說明 按鈕
if (e.getX() >= 400 && e.getX() <= 470 && e.getY() >= 170
&& e.getY() <= 200) {
JOptionPane.showMessageDialog(this,
"這個一個五子棋游戲程序,黑白雙方輪流下棋,當某一方連到五子時,游戲結束。");
}
// 點擊 認輸 按鈕
if (e.getX() >= 400 && e.getX() <= 470 && e.getY() >= 270
&& e.getY() <= 300) {
int result = JOptionPane.showConfirmDialog(this, "是否確認認輸?");
if (result == 0) {
if (isBlack) {
JOptionPane.showMessageDialog(this, "黑方已經認輸,游戲結束!");
} else {
JOptionPane.showMessageDialog(this, "白方已經認輸,游戲結束!");
}
canPlay = false;
}
}
// 點擊 關於 按鈕
if (e.getX() >= 400 && e.getX() <= 470 && e.getY() >= 320
&& e.getY() <= 350) {
JOptionPane.showMessageDialog(this,
"本游戲由MLDN製作,有相關問題可以訪問");
}
// 點擊 退出 按鈕
if (e.getX() >= 400 && e.getX() <= 470 && e.getY() >= 370
&& e.getY() <= 400) {
JOptionPane.showMessageDialog(this, "游戲結束");
System.exit(0);
}
}

public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub

}

private boolean checkWin() {
boolean flag = false;
// 保存共有相同顏色多少棋子相連
int count = 1;
// 判斷橫向是否有5個棋子相連,特點 縱坐標 是相同, 即allChess[x][y]中y值是相同
int color = allChess[x][y];
/*
* if (color == allChess[x+1][y]) { count++; if (color ==
* allChess[x+2][y]) { count++; if (color == allChess[x+3][y]) {
* count++; } } }
*/
// 通過循環來做棋子相連的判斷
/*
* int i = 1; while (color == allChess[x + i][y + 0])
* i = 1; while (color == allChess[x - i][y - 0]) if
* (count >= 5) // 縱向的判斷 int i2 = 1 ; int count2 = 1 ;
* while (color == allChess[x + 0][y + i2]) i2 = 1;
* while (color == allChess[x - 0][y - i2]) if
* (count2 >= 5) // 斜方向的判斷(右上 + 左下) int i3 = 1 ; int
* count3 = 1 ; while (color == allChess[x + i3][y - i3]) { count3++;
* i3++; } i3 = 1; while (color == allChess[x - i3][y + i3]) { count3++;
* i3++; } if (count3 >= 5) // 斜方向的判斷(右下 + 左上) int i4 =
* 1 ; int count4 = 1 ; while (color == allChess[x + i4][y + i4]) {
* count4++; i4++; } i4 = 1; while (color == allChess[x - i4][y - i4]) {
* count4++; i4++; } if (count4 >= 5)
*/

// 判斷橫向
count = this.checkCount(1, 0, color);
if (count >= 5) {
flag = true;
} else {
// 判斷縱向
count = this.checkCount(0, 1, color);
if (count >= 5) {
flag = true;
} else {
// 判斷右上、左下
count = this.checkCount(1, -1, color);
if (count >= 5) {
flag = true;
} else {
// 判斷右下、左上
count = this.checkCount(1, 1, color);
if (count >= 5) {
flag = true;
}
}
}
}

return flag;
}

// 判斷棋子連接的數量
private int checkCount(int xChange, int yChange, int color) {
int count = 1;
int tempX = xChange;
int tempY = yChange;
while (x + xChange >= 0 && x + xChange <= 18 && y + yChange >= 0
&& y + yChange <= 18
&& color == allChess[x + xChange][y + yChange]) {
count++;
if (xChange != 0)
xChange++;
if (yChange != 0) {
if (yChange > 0)
yChange++;
else {
yChange--;
}
}
}
xChange = tempX;
yChange = tempY;
while (x - xChange >= 0 && x - xChange <= 18 && y - yChange >= 0
&& y - yChange <= 18
&& color == allChess[x - xChange][y - yChange]) {
count++;
if (xChange != 0)
xChange++;
if (yChange != 0) {
if (yChange > 0)
yChange++;
else {
yChange--;
}
}
}
return count;
}

public void run() {
// TODO Auto-generated method stub
// 判斷是否有時間限制
if (maxTime > 0) {
while (true) {
if (isBlack) {
blackTime--;
if (blackTime == 0) {
JOptionPane.showMessageDialog(this, "黑方超時,游戲結束!");
}
} else {
whiteTime--;
if (whiteTime == 0) {
JOptionPane.showMessageDialog(this, "白方超時,游戲結束!");
}
}
blackMessage = blackTime / 3600 + ":"
+ (blackTime / 60 - blackTime / 3600 * 60) + ":"
+ (blackTime - blackTime / 60 * 60);
whiteMessage = whiteTime / 3600 + ":"
+ (whiteTime / 60 - whiteTime / 3600 * 60) + ":"
+ (whiteTime - whiteTime / 60 * 60);
this.repaint();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(blackTime + " -- " + whiteTime);
}
}
}

}

Ⅳ 需要五子棋游戲的黑子和白子的圖片

自己PS去背景就好了。

或者去愛五子棋網找找

http://www.iwzq.com/ShowPost.asp?ThreadID=7741

Ⅵ java五子棋背景圖片會覆蓋棋盤

每次刷新界面的時候,先把背景畫上去,然後再畫棋子。為此,你的整個棋盤狀況應該是儲存起來的,代碼大概要做到這樣:游戲在電腦運行,顯示給人看的部分跟整個游戲的運行沒有關系,整個游戲可以隨時以任意形式顯示出來。

就像是程序在主機運行,你把顯示器關了,程序還在跑,把顯示器開了就能看到。

顯示 與 邏輯 要分離

Ⅶ 求一張各種棋都混合放在一起的圖片,至少要有國際象棋中國象棋圍棋(或五子棋)

樓主完全可以根據棋社現有棋類活動與將來或許會新開辦活動的棋類,擺好造型與燈光背景等輔助器械之後,用高清的可調焦數碼相機拍攝。其中如有活動策劃師和攝影師共同商討並且參與此圖片的製作,那樣就更加完美啦。祝君成功!希望能幫上您,如尚且滿意敬請採納,O(∩_∩)O謝謝~~

Ⅷ java編寫的五子棋如何加入背景圖片

線條是自己用畫圖類畫出來的,圖片在容器里邊添加背景就好

Ⅸ 在MFC中,怎麼樣在有背景圖的情況下顯示圖片我編寫了一個人對戰五子棋程序,但是添加背景圖後不顯示棋子

原來棋子顯示正常,而設置背景圖片後,看不到棋子,應該是每次的窗口重畫或背景圖片的重畫會擦掉原來的棋盤,你應該把畫棋子這些以圖片有關的函數都寫到onpaint 或ondraw函數里,這樣,在每次窗口重畫時棋子會一起重畫,就不會被背景擋住了

Ⅹ 求五子棋的背景圖片(不要帶方格的)謝謝

這張可以嗎?