如何“优雅”地蹭旷视天元【MegStudio】免费GPU V100算力资源(一)

1.进入Terminal终端 

2.创建虚拟环境

conda create -n TF2 python=3.7

3.进入创建的虚拟环境

conda activate TF2

无法进入,需要重新初始化conda命令(官方设置conda命令无法使用activate)

conda init -- bash # -- bash之间有空格,我的没有空格就命令错误

然后,重启Terminal终端,就可以进入创建的虚拟环境

conda activate TF2

pip install tensorflow-cpu=2.3.0

如上图,验证安装成功。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一个基于Java Swing的五子棋界面,包含天元和落子功能。代码如下: ```java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Gobang extends JFrame implements ActionListener { private static final long serialVersionUID = 1L; private JPanel jp1, jp2; private JButton jb1, jb2, jb3; private JLabel jl1, jl2, jl3, jl4; private JTextField jt1, jt2; private int[][] chessboard = new int[15][15];// 二维数组存储棋盘信息 private int player = 1;// 玩家1为黑方,玩家2为白方 private boolean isOver = false;// 判断游戏是否结束,false表示未结束,true表示结束 private int x = -1, y = -1;// 记录玩家当前落子的坐标 public Gobang() { super("五子棋游戏");// 设置窗体标题 setSize(600, 600);// 设置窗体大小 setLocationRelativeTo(null);// 将窗体放置到屏幕中央 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置窗体关闭方式 setLayout(new BorderLayout());// 设置窗体布局为BorderLayout // 创建顶部面板 jp1 = new JPanel(); jl1 = new JLabel("玩家1:"); jt1 = new JTextField(10); jl2 = new JLabel("玩家2:"); jt2 = new JTextField(10); jp1.add(jl1); jp1.add(jt1); jp1.add(jl2); jp1.add(jt2); add(jp1, BorderLayout.NORTH); // 创建中心面板 jp2 = new JPanel(new GridLayout(15, 15)); for (int i = 0; i < 15; i++) { for (int j = 0; j < 15; j++) { JButton jb = new JButton(); jb.setPreferredSize(new Dimension(30, 30));// 设置按钮大小 jb.addActionListener(this);// 添加按钮事件监听器 jp2.add(jb); } } add(jp2, BorderLayout.CENTER); // 创建底部面板 jb1 = new JButton("开始游戏"); jb1.addActionListener(this); jb2 = new JButton("重新开始"); jb2.setEnabled(false); jb2.addActionListener(this); jb3 = new JButton("退出游戏"); jb3.addActionListener(this); jl3 = new JLabel("当前玩家:黑方"); jl4 = new JLabel("天元:"); JPanel jp3 = new JPanel(); jp3.add(jb1); jp3.add(jb2); jp3.add(jb3); jp3.add(jl3); jp3.add(jl4); add(jp3, BorderLayout.SOUTH); setVisible(true);// 显示窗体 } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == jb1) {// 点击开始游戏按钮 String name1 = jt1.getText().trim(); String name2 = jt2.getText().trim(); if (name1.equals("") || name2.equals("")) { JOptionPane.showMessageDialog(this, "玩家名称不能为空!", "错误", JOptionPane.ERROR_MESSAGE); return; } jl3.setText("当前玩家:黑方"); jt1.setEditable(false); jt2.setEditable(false); jb1.setEnabled(false); jb2.setEnabled(true); isOver = false; } else if (e.getSource() == jb2) {// 点击重新开始按钮 int result = JOptionPane.showConfirmDialog(this, "确定要重新开始吗?", "提示", JOptionPane.YES_NO_OPTION); if (result == JOptionPane.YES_OPTION) { reset(); } } else if (e.getSource() == jb3) {// 点击退出游戏按钮 int result = JOptionPane.showConfirmDialog(this, "确定要退出游戏吗?", "提示", JOptionPane.YES_NO_OPTION); if (result == JOptionPane.YES_OPTION) { System.exit(0); } } else {// 点击棋盘按钮 JButton jb = (JButton) e.getSource(); int index = jp2.getComponentZOrder(jb);// 获取按钮在面板中的索引 x = index / 15;// 计算按钮在棋盘中的行坐标 y = index % 15;// 计算按钮在棋盘中的列坐标 if (isOver) {// 游戏已结束,不能再落子 JOptionPane.showMessageDialog(this, "游戏已结束,请重新开始!", "提示", JOptionPane.INFORMATION_MESSAGE); return; } if (chessboard[x][y] != 0) {// 该位置已有棋子,不能再落子 JOptionPane.showMessageDialog(this, "该位置已有棋子,请重新选择!", "提示", JOptionPane.INFORMATION_MESSAGE); return; } if (player == 1) { jb.setIcon(new ImageIcon("images/black.png"));// 设置按钮图标为黑子 chessboard[x][y] = 1;// 该位置值设为1,表示黑子 jl3.setText("当前玩家:白方"); player = 2; } else { jb.setIcon(new ImageIcon("images/white.png"));// 设置按钮图标为白子 chessboard[x][y] = 2;// 该位置值设为2,表示白子 jl3.setText("当前玩家:黑方"); player = 1; } if (checkWin()) {// 检测是否有一方胜利 if (player == 1) { JOptionPane.showMessageDialog(this, jt2.getText().trim() + " 获胜!", "游戏结束", JOptionPane.INFORMATION_MESSAGE); } else { JOptionPane.showMessageDialog(this, jt1.getText().trim() + " 获胜!", "游戏结束", JOptionPane.INFORMATION_MESSAGE); } isOver = true; } } } // 重置游戏 private void reset() { for (int i = 0; i < 15; i++) { for (int j = 0; j < 15; j++) { JButton jb = (JButton) jp2.getComponent(i * 15 + j); jb.setIcon(null);// 清空按钮图标 chessboard[i][j] = 0;// 清空棋盘信息 } } jt1.setText(""); jt2.setText(""); jt1.setEditable(true); jt2.setEditable(true); jl3.setText("当前玩家:黑方"); jb1.setEnabled(true); jb2.setEnabled(false); isOver = false; player = 1; x = -1; y = -1; } // 检测是否有一方胜利 private boolean checkWin() { int count = 1;// 记录连续相同颜色的棋子数 int color = chessboard[x][y];// 当前落子颜色 // 横向检测 for (int i = y - 1; i >= 0; i--) {// 向左检测 if (chessboard[x][i] == color) { count++; } else { break; } } for (int i = y + 1; i < 15; i++) {// 向右检测 if (chessboard[x][i] == color) { count++; } else { break; } } if (count >= 5) { return true; } // 纵向检测 count = 1; for (int i = x - 1; i >= 0; i--) {// 向上检测 if (chessboard[i][y] == color) { count++; } else { break; } } for (int i = x + 1; i < 15; i++) {// 向下检测 if (chessboard[i][y] == color) { count++; } else { break; } } if (count >= 5) { return true; } // 左上到右下斜向检测 count = 1; for (int i = x - 1, j = y - 1; i >= 0 && j >= 0; i--, j--) {// 向左上检测 if (chessboard[i][j] == color) { count++; } else { break; } } for (int i = x + 1, j = y + 1; i < 15 && j < 15; i++, j++) {// 向右下检测 if (chessboard[i][j] == color) { count++; } else { break; } } if (count >= 5) { return true; } // 左下到右上斜向检测 count = 1; for (int i = x + 1, j = y - 1; i < 15 && j >= 0; i++, j--) {// 向左下检测 if (chessboard[i][j] == color) { count++; } else { break; } } for (int i = x - 1, j = y + 1; i >= 0 && j < 15; i--, j++) {// 向右上检测 if (chessboard[i][j] == color) { count++; } else { break; } } if (count >= 5) { return true; } return false; } public static void main(String[] args) { new Gobang(); } } ``` 需要注意的是,代码中用到了黑子和白子的图片,可以根据自己的需求修改为其他图片,或者直接使用文字表示棋子。图片文件需要放在与代码文件同一目录下。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值