Position: Home page » Blockchain » Blockchain game free source code
Blockchain game free source code
Publish: 2021-03-24 18:43:05
1. blockchain games mainly refer to the blockchain applications in DAPP, which belong to the game category and need to interact with various blockchain public chains to a certain extent. Blockchain Games began to emerge in November of 17, with a very short history. Compared with mature games, the current playing method is quite simple. In the view of the instry, many games are even just a capital disk wrapped in the game coat
according to the classification of cryptogames, hot potato, Collectible transaction, spinach and Ponzi are the main game playing methods among the online blockchain games. The most popular games are hot potato games, including two popular games recently - cryptocelebrities and cryptocountries. There are 35 collections and transactions, ranking second, mainly represented by cryptokitties. Spinach and Ponzi are 17, ranking third, with etherroll and etheremon as the star procts
blockchain games also use a variety of themes, from cats, dogs, dragons, pigs and other animals to people, cars, countries, teams and so on
blockchain game 1.0 era
time: November to December 2017
main playing method: Collection + transaction
representative works: cryptokitties, cryptopunks
blockchain technology gives uniqueness to players' digital assets. This graally leads to the concept of NFT (non fungible tokens). The uniqueness and scarcity of people's assets in blockchain games will not change with the game itself. The concept was first applied by cryptopunks, which was launched by larva labs in June of 17. The system randomly generates 10000 punk avatars, which are put on Ethereum through smart contracts and distributed to players for free for trading
when axiom Zen studio added attributes, reproction and auction functions to NFT, cryptokitties was born. People can buy kittens with different attributes, breed with other cats, or sell their own cats through Dutch auction. Kittens with rare and unique genes are wildly sought after by people, and they get a high premium
people continue to develop on the basis of cryptokitties, adding accessories and combat functions, as well as gold digging, feeding, and looting
blockchain game 2.0 era
time: December 2017 to January 2018
main play method: Ponzi like
masterpiece: etheremon
at the beginning, etheremon's play method was very simple and crude. After a player bought a pet, as long as someone bought the same pet, the player could get a small part of eth reward. The game team quickly made a profit of about 2000 eth in a week. Then completely change the way of play, successfully transformed into a collection + combat game. This kind of Ponzi like game was quickly imitated by other manufacturers, and many imitators such as ethertanks and ethertanks appeared<
blockchain game 3.0 era
time: January 2018
main play method: fixed price, forced price hot potato mode
representative works: cryptocelebrities, cryptocountries
players buy encryption celebrities (Nakamoto, musk, etc.) and encryption countries (Japan, the United States, etc.), e to the uniqueness of assets, Subsequent players can only buy from asset owners at a higher price. The price is forced to rise, and the platform earns part of the price difference. At present, the country with the highest price is Japan, about 700 eth, and the most expensive celebrity is Elon Musk, who is worth about 200 eth
blockchain game 4.0 era
time: February 2018
main playing methods: combination of multiple mechanisms
representative works: world.mycollect, cryptocities
in the game, multi-level sales and sharing, player exploration (randomness), lottery, resource uniqueness and other playing methods are adopted. In cryptocities, for example, players can buy countries, continents and the world to "conquer.". The player who conquers the world can get 1% of the transaction volume of the continent and the country, and the player who conquers the continent can get 1% of the transaction volume of the country. In the future, players who conquer the country can get 1% of the transaction value of their subordinate cities. When exploring a new city, players have a chance to explore gems and get eth rewards
at the same time, spinach games also emerged. The high transparency of blockchains makes it easier for them to gain the trust of investors. The more famous ones are etheroll and vdice. They play simply and rudely. Players spend a certain amount of eth to bet on a certain number. When the number randomly generated by the system is less than that number, they can get profits
in addition, there are RPG (ethercraft), battle games (etherbots) and binary (ethermeng king), etc
2
advantages and disadvantages of blockchain games
throughout these successful cases, we find that blockchain games do have unique advantages:
high degree of trust: trust is quickly established through open source contracts, the use process is completely transparent, and the information is completely symmetrical. Fairness: data can not be tampered with and rules will never change. Assets belong to indivial players: Players' assets will not be lost with the decline of the game. Strong community attribute: blockchain itself has strong transaction and community attributes
of course, the current blockchain game is also in its infancy, with obvious disadvantages:
unable to interact in time: there are uncertain waiting time and congestion in blockchain transactions, so it is difficult to form timely interaction between players. The cost of sending instructions is high: every time the instructions are sent, gas will be consumed, while the price of eth still makes the cost of gas relatively high. Immature development environment: at present, Ethereum's virtual machine and programming language solidness are the most mature development environment in many public chains. But compared with other popular languages, it is still very immature
3
Gamification will boost the implementation of blockchain
in traditional desktop online games, manufacturers constantly encourage new players, leading to inflation, and the real value of all assets of a game account is often far lower than the players' investment. After the emergence of mobile games, the mode of props binding account and account binding ID card soon became popular. This also makes once the player decides to leave a game, he must give up all the virtual assets in the game. The emergence and continuous maturity of blockchain technology will make the decentralized formulation of game rules and decentralized storage of virtual assets technically feasible. The convenience of virtual assets on the chain also makes the blockchain easier to land in the game scene
cryptogames believes that the development direction of blockchain games, or the development direction of classic games (like basketball, football and chess, once the rules are determined, they will last forever), It must be "decentralized":
the rules are determined by the players through negotiation, and the players supervise each other to ensure that the game is carried out according to the rules. All the props used in the game are owned by the players themselves. If someone breaks the rules or is not happy with the game, they can go away directly. There is no centralized organizer in the game itself.
the popularity of cryptokitties has greatly promoted private wallet, Blockchain game, as an early application of blockchain, has rapidly promoted the popularity of blockchain. Similarly, the use of game development experience and game design concept to develop a game
according to the classification of cryptogames, hot potato, Collectible transaction, spinach and Ponzi are the main game playing methods among the online blockchain games. The most popular games are hot potato games, including two popular games recently - cryptocelebrities and cryptocountries. There are 35 collections and transactions, ranking second, mainly represented by cryptokitties. Spinach and Ponzi are 17, ranking third, with etherroll and etheremon as the star procts
blockchain games also use a variety of themes, from cats, dogs, dragons, pigs and other animals to people, cars, countries, teams and so on
blockchain game 1.0 era
time: November to December 2017
main playing method: Collection + transaction
representative works: cryptokitties, cryptopunks
blockchain technology gives uniqueness to players' digital assets. This graally leads to the concept of NFT (non fungible tokens). The uniqueness and scarcity of people's assets in blockchain games will not change with the game itself. The concept was first applied by cryptopunks, which was launched by larva labs in June of 17. The system randomly generates 10000 punk avatars, which are put on Ethereum through smart contracts and distributed to players for free for trading
when axiom Zen studio added attributes, reproction and auction functions to NFT, cryptokitties was born. People can buy kittens with different attributes, breed with other cats, or sell their own cats through Dutch auction. Kittens with rare and unique genes are wildly sought after by people, and they get a high premium
people continue to develop on the basis of cryptokitties, adding accessories and combat functions, as well as gold digging, feeding, and looting
blockchain game 2.0 era
time: December 2017 to January 2018
main play method: Ponzi like
masterpiece: etheremon
at the beginning, etheremon's play method was very simple and crude. After a player bought a pet, as long as someone bought the same pet, the player could get a small part of eth reward. The game team quickly made a profit of about 2000 eth in a week. Then completely change the way of play, successfully transformed into a collection + combat game. This kind of Ponzi like game was quickly imitated by other manufacturers, and many imitators such as ethertanks and ethertanks appeared<
blockchain game 3.0 era
time: January 2018
main play method: fixed price, forced price hot potato mode
representative works: cryptocelebrities, cryptocountries
players buy encryption celebrities (Nakamoto, musk, etc.) and encryption countries (Japan, the United States, etc.), e to the uniqueness of assets, Subsequent players can only buy from asset owners at a higher price. The price is forced to rise, and the platform earns part of the price difference. At present, the country with the highest price is Japan, about 700 eth, and the most expensive celebrity is Elon Musk, who is worth about 200 eth
blockchain game 4.0 era
time: February 2018
main playing methods: combination of multiple mechanisms
representative works: world.mycollect, cryptocities
in the game, multi-level sales and sharing, player exploration (randomness), lottery, resource uniqueness and other playing methods are adopted. In cryptocities, for example, players can buy countries, continents and the world to "conquer.". The player who conquers the world can get 1% of the transaction volume of the continent and the country, and the player who conquers the continent can get 1% of the transaction volume of the country. In the future, players who conquer the country can get 1% of the transaction value of their subordinate cities. When exploring a new city, players have a chance to explore gems and get eth rewards
at the same time, spinach games also emerged. The high transparency of blockchains makes it easier for them to gain the trust of investors. The more famous ones are etheroll and vdice. They play simply and rudely. Players spend a certain amount of eth to bet on a certain number. When the number randomly generated by the system is less than that number, they can get profits
in addition, there are RPG (ethercraft), battle games (etherbots) and binary (ethermeng king), etc
2
advantages and disadvantages of blockchain games
throughout these successful cases, we find that blockchain games do have unique advantages:
high degree of trust: trust is quickly established through open source contracts, the use process is completely transparent, and the information is completely symmetrical. Fairness: data can not be tampered with and rules will never change. Assets belong to indivial players: Players' assets will not be lost with the decline of the game. Strong community attribute: blockchain itself has strong transaction and community attributes
of course, the current blockchain game is also in its infancy, with obvious disadvantages:
unable to interact in time: there are uncertain waiting time and congestion in blockchain transactions, so it is difficult to form timely interaction between players. The cost of sending instructions is high: every time the instructions are sent, gas will be consumed, while the price of eth still makes the cost of gas relatively high. Immature development environment: at present, Ethereum's virtual machine and programming language solidness are the most mature development environment in many public chains. But compared with other popular languages, it is still very immature
3
Gamification will boost the implementation of blockchain
in traditional desktop online games, manufacturers constantly encourage new players, leading to inflation, and the real value of all assets of a game account is often far lower than the players' investment. After the emergence of mobile games, the mode of props binding account and account binding ID card soon became popular. This also makes once the player decides to leave a game, he must give up all the virtual assets in the game. The emergence and continuous maturity of blockchain technology will make the decentralized formulation of game rules and decentralized storage of virtual assets technically feasible. The convenience of virtual assets on the chain also makes the blockchain easier to land in the game scene
cryptogames believes that the development direction of blockchain games, or the development direction of classic games (like basketball, football and chess, once the rules are determined, they will last forever), It must be "decentralized":
the rules are determined by the players through negotiation, and the players supervise each other to ensure that the game is carried out according to the rules. All the props used in the game are owned by the players themselves. If someone breaks the rules or is not happy with the game, they can go away directly. There is no centralized organizer in the game itself.
the popularity of cryptokitties has greatly promoted private wallet, Blockchain game, as an early application of blockchain, has rapidly promoted the popularity of blockchain. Similarly, the use of game development experience and game design concept to develop a game
2. You can go to cloudleopard technology, and the team is more experienced.
3. I have a technical team here. Do you want to develop your own operation or someone else's operation?
4. You can go to GitHub to see the source code of yitaimao on eth
5. There are a lot of free code to download, as long as there are a lot of Google, according to your own needs to find, the original code of the website is a lot, generally in the IT website will have, you search it website, you can find the source code you want
after downloading the source code, there is a back door, if you understand this, I don't need to teach you ~!
after downloading the source code, there is a back door, if you understand this, I don't need to teach you ~!
6. 俄罗斯方块——java源代码提供
import java.awt.*;
import java.awt.event.*;
//俄罗斯方块类
public class ERS_Block extends Frame{
public static boolean isPlay=false;
public static int level=1,score=0;
public static TextField scoreField,levelField;
public static MyTimer timer;
GameCanvas gameScr;
public static void main(String[] argus){
ERS_Block ers = new ERS_Block("俄罗斯方块游戏 V1.0 Author:Vincent");
WindowListener win_listener = new WinListener();
ers.addWindowListener(win_listener);
}
//俄罗斯方块类的构造方法
ERS_Block(String title){
super(title);
setSize(600,480);
setLayout(new GridLayout(1,2));
gameScr = new GameCanvas();
gameScr.addKeyListener(gameScr);
timer = new MyTimer(gameScr);
timer.setDaemon(true);
timer.start();
timer.suspend();
add(gameScr);
Panel rightScr = new Panel();
rightScr.setLayout(new GridLayout(2,1,0,30));
rightScr.setSize(120,500);
add(rightScr);
//右边信息窗体的布局
MyPanel infoScr = new MyPanel();
infoScr.setLayout(new GridLayout(4,1,0,5));
infoScr.setSize(120,300);
rightScr.add(infoScr);
//定义标签和初始值
Label scorep = new Label("分数:",Label.LEFT);
Label levelp = new Label("级数:",Label.LEFT);
scoreField = new TextField(8);
levelField = new TextField(8);
scoreField.setEditable(false);
levelField.setEditable(false);
infoScr.add(scorep);
infoScr.add(scoreField);
infoScr.add(levelp);
infoScr.add(levelField);
scorep.setSize(new Dimension(20,60));
scoreField.setSize(new Dimension(20,60));
levelp.setSize(new Dimension(20,60));
levelField.setSize(new Dimension(20,60));
scoreField.setText("0");
levelField.setText("1");
//右边控制按钮窗体的布局
MyPanel controlScr = new MyPanel();
controlScr.setLayout(new GridLayout(5,1,0,5));
rightScr.add(controlScr);
//定义按钮play
Button play_b = new Button("开始游戏");
play_b.setSize(new Dimension(50,200));
play_b.addActionListener(new Command(Command.button_play,gameScr));
//定义按钮Level UP
Button level_up_b = new Button("提高级数");
level_up_b.setSize(new Dimension(50,200));
level_up_b.addActionListener(new Command(Command.button_levelup,gameScr));
//定义按钮Level Down
Button level_down_b =new Button("降低级数");
level_down_b.setSize(new Dimension(50,200));
level_down_b.addActionListener(new Command(Command.button_leveldown,gameScr));
//定义按钮Level Pause
Button pause_b =new Button("游戏暂停");
pause_b.setSize(new Dimension(50,200));
pause_b.addActionListener(new Command(Command.button_pause,gameScr));
//定义按钮Quit
Button quit_b = new Button("退出游戏");
quit_b.setSize(new Dimension(50,200));
quit_b.addActionListener(new Command(Command.button_quit,gameScr));
controlScr.add(play_b);
controlScr.add(level_up_b);
controlScr.add(level_down_b);
controlScr.add(pause_b);
controlScr.add(quit_b);
setVisible(true);
gameScr.requestFocus();
}
}
//重写MyPanel类,使Panel的四周留空间
class MyPanel extends Panel{
public Insets getInsets(){
return new Insets(30,50,30,50);
}
}
//游戏画布类
class GameCanvas extends Canvas implements KeyListener{
final int unitSize = 30; //小方块边长
int rowNum; //正方格的行数
int columnNum; //正方格的列数
int maxAllowRowNum; //允许有多少行未削
int blockInitRow; //新出现块的起始行坐标
int blockInitCol; //新出现块的起始列坐标
int [][] scrArr; //屏幕数组
Block b; //对方快的引用
//画布类的构造方法
GameCanvas(){
rowNum = 15;
columnNum = 10;
maxAllowRowNum = rowNum - 2;
b = new Block(this);
blockInitRow = rowNum - 1;
blockInitCol = columnNum/2 - 2;
scrArr = new int [32][32];
}
//初始化屏幕,并将屏幕数组清零的方法
void initScr(){
for(int i=0;i<rowNum;i++)
for (int j=0; j<columnNum;j++)
scrArr[j]=0;
b.reset();
repaint();
}
//重新刷新画布方法
public void paint(Graphics g){
for(int i = 0; i < rowNum; i++)
for(int j = 0; j < columnNum; j++)
drawUnit(i,j,scrArr[j]);
}
//画方块的方法
public void drawUnit(int row,int col,int type){
scrArr[row][col] = type;
Graphics g = getGraphics();
tch(type){ //表示画方快的方法
case 0: g.setColor(Color.black);break; //以背景为颜色画
case 1: g.setColor(Color.blue);break; //画正在下落的方块
case 2: g.setColor(Color.magenta);break; //画已经落下的方法
}
g.fill3DRect(col*unitSize,getSize().height-(row+1)*unitSize,unitSize,unitSize,true);
g.dispose();
}
public Block getBlock(){
return b; //返回block实例的引用
}
//返回屏幕数组中(row,col)位置的属性值
public int getScrArrXY(int row,int col){
if (row < 0 || row >= rowNum || col < 0 || col >= columnNum)
return(-1);
else
return(scrArr[row][col]);
}
//返回新块的初始行坐标方法
public int getInitRow(){
return(blockInitRow); //返回新块的初始行坐标
}
//返回新块的初始列坐标方法
public int getInitCol(){
return(blockInitCol); //返回新块的初始列坐标
}
//满行删除方法
void deleteFullLine(){
int full_line_num = 0;
int k = 0;
for (int i=0;i<rowNum;i++){
boolean isfull = true;
L1:for(int j=0;j<columnNum;j++)
if(scrArr[j] == 0){
k++;
isfull = false;
break L1;
}
if(isfull) full_line_num++;
if(k!=0 && k-1!=i && !isfull)
for(int j = 0; j < columnNum; j++){
if (scrArr[j] == 0)
drawUnit(k-1,j,0);
else
drawUnit(k-1,j,2);
scrArr[k-1][j] = scrArr[j];
}
}
for(int i = k-1 ;i < rowNum; i++){
for(int j = 0; j < columnNum; j++){
drawUnit(i,j,0);
scrArr[j]=0;
}
}
ERS_Block.score += full_line_num;
ERS_Block.scoreField.setText(""+ERS_Block.score);
}
//判断游戏是否结束方法
boolean isGameEnd(){
for (int col = 0 ; col <columnNum; col ++){
if(scrArr[maxAllowRowNum][col] !=0)
return true;
}
return false;
}
public void keyTyped(KeyEvent e){
}
public void keyReleased(KeyEvent e){
}
//处理键盘输入的方法
public void keyPressed(KeyEvent e){
if(!ERS_Block.isPlay)
return;
tch(e.getKeyCode()){
case KeyEvent.VK_DOWN:b.fallDown();break;
case KeyEvent.VK_LEFT:b.leftMove();break;
case KeyEvent.VK_RIGHT:b.rightMove();break;
case KeyEvent.VK_SPACE:b.leftTurn();break;
}
}
}
//处理控制类
class Command implements ActionListener{
static final int button_play = 1; //给按钮分配编号
static final int button_levelup = 2;
static final int button_leveldown = 3;
static final int button_quit = 4;
static final int button_pause = 5;
static boolean pause_resume = true;
int curButton; //当前按钮
GameCanvas scr;
//控制按钮类的构造方法
Command(int button,GameCanvas scr){
curButton = button;
this.scr=scr;
}
//按钮执行方法
public void actionPerformed (ActionEvent e){
tch(curButton){
case button_play:if(!ERS_Block.isPlay){
scr.initScr();
ERS_Block.isPlay = true;
ERS_Block.score = 0;
ERS_Block.scoreField.setText("0");
ERS_Block.timer.resume();
}
scr.requestFocus();
break;
case button_levelup:if(ERS_Block.level < 10){
ERS_Block.level++;
ERS_Block.levelField.setText(""+ERS_Block.level);
ERS_Block.score = 0;
ERS_Block.scoreField.setText(""+ERS_Block.score);
}
scr.requestFocus();
break;
case button_leveldown:if(ERS_Block.level > 1){
ERS_Block.level--;
ERS_Block.levelField.setText(""+ERS_Block.level);
ERS_Block.score = 0;
ERS_Block.scoreField.setText(""+ERS_Block.score);
}
scr.requestFocus();
break;
case button_pause:if(pause_resume){
ERS_Block.timer.suspend();
pause_resume = false;
}else{
ERS_Block.timer.resume();
pause_resume = true;
}
scr.requestFocus();
break;
case button_quit:System.exit(0);
}
}
}
//方块类
class Block {
static int[][] pattern = {
{0x0f00,0x4444,0x0f00,0x4444},//用十六进至表示,本行表示长条四种状态
{0x04e0,0x0464,0x00e4,0x04c4},
{0x4620,0x6c00,0x4620,0x6c00},
{0x2640,0xc600,0x2640,0xc600},
{0x6220,0x1700,0x2230,0x0740},
{0x6440,0x0e20,0x44c0,0x8e00},
{0x0660,0x0660,0x0660,0x0660}
};
int blockType; //块的模式号0-6
int turnState; //块的翻转状态0-3
int blockState; //快的下落状态
int row,col; //块在画布上的坐标
GameCanvas scr;
//块类的构造方法
Block(GameCanvas scr){
this.scr = scr;
blockType = (int)(Math.random() * 1000)%7;
turnState = (int)(Math.random() * 1000)%4;
blockState = 1;
row = scr.getInitRow();
col = scr.getInitC
import java.awt.*;
import java.awt.event.*;
//俄罗斯方块类
public class ERS_Block extends Frame{
public static boolean isPlay=false;
public static int level=1,score=0;
public static TextField scoreField,levelField;
public static MyTimer timer;
GameCanvas gameScr;
public static void main(String[] argus){
ERS_Block ers = new ERS_Block("俄罗斯方块游戏 V1.0 Author:Vincent");
WindowListener win_listener = new WinListener();
ers.addWindowListener(win_listener);
}
//俄罗斯方块类的构造方法
ERS_Block(String title){
super(title);
setSize(600,480);
setLayout(new GridLayout(1,2));
gameScr = new GameCanvas();
gameScr.addKeyListener(gameScr);
timer = new MyTimer(gameScr);
timer.setDaemon(true);
timer.start();
timer.suspend();
add(gameScr);
Panel rightScr = new Panel();
rightScr.setLayout(new GridLayout(2,1,0,30));
rightScr.setSize(120,500);
add(rightScr);
//右边信息窗体的布局
MyPanel infoScr = new MyPanel();
infoScr.setLayout(new GridLayout(4,1,0,5));
infoScr.setSize(120,300);
rightScr.add(infoScr);
//定义标签和初始值
Label scorep = new Label("分数:",Label.LEFT);
Label levelp = new Label("级数:",Label.LEFT);
scoreField = new TextField(8);
levelField = new TextField(8);
scoreField.setEditable(false);
levelField.setEditable(false);
infoScr.add(scorep);
infoScr.add(scoreField);
infoScr.add(levelp);
infoScr.add(levelField);
scorep.setSize(new Dimension(20,60));
scoreField.setSize(new Dimension(20,60));
levelp.setSize(new Dimension(20,60));
levelField.setSize(new Dimension(20,60));
scoreField.setText("0");
levelField.setText("1");
//右边控制按钮窗体的布局
MyPanel controlScr = new MyPanel();
controlScr.setLayout(new GridLayout(5,1,0,5));
rightScr.add(controlScr);
//定义按钮play
Button play_b = new Button("开始游戏");
play_b.setSize(new Dimension(50,200));
play_b.addActionListener(new Command(Command.button_play,gameScr));
//定义按钮Level UP
Button level_up_b = new Button("提高级数");
level_up_b.setSize(new Dimension(50,200));
level_up_b.addActionListener(new Command(Command.button_levelup,gameScr));
//定义按钮Level Down
Button level_down_b =new Button("降低级数");
level_down_b.setSize(new Dimension(50,200));
level_down_b.addActionListener(new Command(Command.button_leveldown,gameScr));
//定义按钮Level Pause
Button pause_b =new Button("游戏暂停");
pause_b.setSize(new Dimension(50,200));
pause_b.addActionListener(new Command(Command.button_pause,gameScr));
//定义按钮Quit
Button quit_b = new Button("退出游戏");
quit_b.setSize(new Dimension(50,200));
quit_b.addActionListener(new Command(Command.button_quit,gameScr));
controlScr.add(play_b);
controlScr.add(level_up_b);
controlScr.add(level_down_b);
controlScr.add(pause_b);
controlScr.add(quit_b);
setVisible(true);
gameScr.requestFocus();
}
}
//重写MyPanel类,使Panel的四周留空间
class MyPanel extends Panel{
public Insets getInsets(){
return new Insets(30,50,30,50);
}
}
//游戏画布类
class GameCanvas extends Canvas implements KeyListener{
final int unitSize = 30; //小方块边长
int rowNum; //正方格的行数
int columnNum; //正方格的列数
int maxAllowRowNum; //允许有多少行未削
int blockInitRow; //新出现块的起始行坐标
int blockInitCol; //新出现块的起始列坐标
int [][] scrArr; //屏幕数组
Block b; //对方快的引用
//画布类的构造方法
GameCanvas(){
rowNum = 15;
columnNum = 10;
maxAllowRowNum = rowNum - 2;
b = new Block(this);
blockInitRow = rowNum - 1;
blockInitCol = columnNum/2 - 2;
scrArr = new int [32][32];
}
//初始化屏幕,并将屏幕数组清零的方法
void initScr(){
for(int i=0;i<rowNum;i++)
for (int j=0; j<columnNum;j++)
scrArr[j]=0;
b.reset();
repaint();
}
//重新刷新画布方法
public void paint(Graphics g){
for(int i = 0; i < rowNum; i++)
for(int j = 0; j < columnNum; j++)
drawUnit(i,j,scrArr[j]);
}
//画方块的方法
public void drawUnit(int row,int col,int type){
scrArr[row][col] = type;
Graphics g = getGraphics();
tch(type){ //表示画方快的方法
case 0: g.setColor(Color.black);break; //以背景为颜色画
case 1: g.setColor(Color.blue);break; //画正在下落的方块
case 2: g.setColor(Color.magenta);break; //画已经落下的方法
}
g.fill3DRect(col*unitSize,getSize().height-(row+1)*unitSize,unitSize,unitSize,true);
g.dispose();
}
public Block getBlock(){
return b; //返回block实例的引用
}
//返回屏幕数组中(row,col)位置的属性值
public int getScrArrXY(int row,int col){
if (row < 0 || row >= rowNum || col < 0 || col >= columnNum)
return(-1);
else
return(scrArr[row][col]);
}
//返回新块的初始行坐标方法
public int getInitRow(){
return(blockInitRow); //返回新块的初始行坐标
}
//返回新块的初始列坐标方法
public int getInitCol(){
return(blockInitCol); //返回新块的初始列坐标
}
//满行删除方法
void deleteFullLine(){
int full_line_num = 0;
int k = 0;
for (int i=0;i<rowNum;i++){
boolean isfull = true;
L1:for(int j=0;j<columnNum;j++)
if(scrArr[j] == 0){
k++;
isfull = false;
break L1;
}
if(isfull) full_line_num++;
if(k!=0 && k-1!=i && !isfull)
for(int j = 0; j < columnNum; j++){
if (scrArr[j] == 0)
drawUnit(k-1,j,0);
else
drawUnit(k-1,j,2);
scrArr[k-1][j] = scrArr[j];
}
}
for(int i = k-1 ;i < rowNum; i++){
for(int j = 0; j < columnNum; j++){
drawUnit(i,j,0);
scrArr[j]=0;
}
}
ERS_Block.score += full_line_num;
ERS_Block.scoreField.setText(""+ERS_Block.score);
}
//判断游戏是否结束方法
boolean isGameEnd(){
for (int col = 0 ; col <columnNum; col ++){
if(scrArr[maxAllowRowNum][col] !=0)
return true;
}
return false;
}
public void keyTyped(KeyEvent e){
}
public void keyReleased(KeyEvent e){
}
//处理键盘输入的方法
public void keyPressed(KeyEvent e){
if(!ERS_Block.isPlay)
return;
tch(e.getKeyCode()){
case KeyEvent.VK_DOWN:b.fallDown();break;
case KeyEvent.VK_LEFT:b.leftMove();break;
case KeyEvent.VK_RIGHT:b.rightMove();break;
case KeyEvent.VK_SPACE:b.leftTurn();break;
}
}
}
//处理控制类
class Command implements ActionListener{
static final int button_play = 1; //给按钮分配编号
static final int button_levelup = 2;
static final int button_leveldown = 3;
static final int button_quit = 4;
static final int button_pause = 5;
static boolean pause_resume = true;
int curButton; //当前按钮
GameCanvas scr;
//控制按钮类的构造方法
Command(int button,GameCanvas scr){
curButton = button;
this.scr=scr;
}
//按钮执行方法
public void actionPerformed (ActionEvent e){
tch(curButton){
case button_play:if(!ERS_Block.isPlay){
scr.initScr();
ERS_Block.isPlay = true;
ERS_Block.score = 0;
ERS_Block.scoreField.setText("0");
ERS_Block.timer.resume();
}
scr.requestFocus();
break;
case button_levelup:if(ERS_Block.level < 10){
ERS_Block.level++;
ERS_Block.levelField.setText(""+ERS_Block.level);
ERS_Block.score = 0;
ERS_Block.scoreField.setText(""+ERS_Block.score);
}
scr.requestFocus();
break;
case button_leveldown:if(ERS_Block.level > 1){
ERS_Block.level--;
ERS_Block.levelField.setText(""+ERS_Block.level);
ERS_Block.score = 0;
ERS_Block.scoreField.setText(""+ERS_Block.score);
}
scr.requestFocus();
break;
case button_pause:if(pause_resume){
ERS_Block.timer.suspend();
pause_resume = false;
}else{
ERS_Block.timer.resume();
pause_resume = true;
}
scr.requestFocus();
break;
case button_quit:System.exit(0);
}
}
}
//方块类
class Block {
static int[][] pattern = {
{0x0f00,0x4444,0x0f00,0x4444},//用十六进至表示,本行表示长条四种状态
{0x04e0,0x0464,0x00e4,0x04c4},
{0x4620,0x6c00,0x4620,0x6c00},
{0x2640,0xc600,0x2640,0xc600},
{0x6220,0x1700,0x2230,0x0740},
{0x6440,0x0e20,0x44c0,0x8e00},
{0x0660,0x0660,0x0660,0x0660}
};
int blockType; //块的模式号0-6
int turnState; //块的翻转状态0-3
int blockState; //快的下落状态
int row,col; //块在画布上的坐标
GameCanvas scr;
//块类的构造方法
Block(GameCanvas scr){
this.scr = scr;
blockType = (int)(Math.random() * 1000)%7;
turnState = (int)(Math.random() * 1000)%4;
blockState = 1;
row = scr.getInitRow();
col = scr.getInitC
7. Network game source code is the basis of the game, in the eyes of laymen is countless lines of English and numbers, in fact, is a set of proceres
of course, the role is to develop games
with the source code in hand, you can make a game. Of course, if you don't change anything, the function will be the same as the original game
now you can search the source code of online games, but most of them are incomplete, that is to say, even if you get them, you can't use them< As like as two peas, br / > if you have a game made in China, you will be the same as it is because it is a right infringement.
so even if you get the source code, you need to have complete art resources. You need to replace the program map to achieve a different visual effect. The world background and stories have to be changed. Of course, the cost of all this is not generally high.
of course, the role is to develop games
with the source code in hand, you can make a game. Of course, if you don't change anything, the function will be the same as the original game
now you can search the source code of online games, but most of them are incomplete, that is to say, even if you get them, you can't use them< As like as two peas, br / > if you have a game made in China, you will be the same as it is because it is a right infringement.
so even if you get the source code, you need to have complete art resources. You need to replace the program map to achieve a different visual effect. The world background and stories have to be changed. Of course, the cost of all this is not generally high.
8. Have you heard of plug-ins<
client... > server sends player data
server... > client sends environment data
you just need to simulate a server
when the client sends a contract to the server, the machine automatically intercepts the pseudo server sent to you
after the pseudo server gets it, it sends the corresponding package back according to the calculation,
after passing through the shell software of the client and sending it to the client of the game,
the socks protocol is well understood and well done
any language does not include script language and Japanese
client... > server sends player data
server... > client sends environment data
you just need to simulate a server
when the client sends a contract to the server, the machine automatically intercepts the pseudo server sent to you
after the pseudo server gets it, it sends the corresponding package back according to the calculation,
after passing through the shell software of the client and sending it to the client of the game,
the socks protocol is well understood and well done
any language does not include script language and Japanese
9. Can see clouded leopard network company, the team is experienced
10. Isn't private service
Hot content