1.帮忙看看这个ja程序好么,有点小细节不是很懂,其中不懂的一个地方我标记好了,麻烦大家了~~
2.求ja题源代码,最好有注释,
3.python可以做哪些小游戏?
4.VB代码注释 哪位高人帮帮我吧
帮忙看看这个ja程序好么,有点小细节不是很懂,其中不懂的一个地方我标记好了,麻烦大家了~~
你好,我帮你把程序测试了一下,得出的结论是:
你运行程序中得到的窗体的边界不是小球的碰撞边界,而是比碰撞边界小,去掉25后,小球明显有跃出边框的视觉效果。所以x>(table.getSize().width)-25和y>(table.getSize().width)-25都有这个设置,就是为了模拟的更真实一些,当然你也可以修改这些值去对比不同的效果。
求ja题源代码,最好有注释,
import ja.awt.*;
import ja.awt.event.*;
import ja.awt.geom.*;
import ja.util.*;
import jax.swing.*;
/**
* 多线程,小球演示. 打开Windows任务管理器,可看到线程变化。 可搜索到,run()方法/.start()
*
* du: 程序技巧体会: 所谓产生一个小球,即是 new 其类对象,其属性携带画小球的 坐标、颜色、所在容器 等参数。
*
* 一个类,属性用来作为参数容器用, 方法....完成功能。
* */
// 运行类
public class BouncePress {
//
public static void main(String[] args) {
JFrame frame = new BouncePressFrame(); // 生成窗口。执行构造。-----业务逻辑。
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // similar to
// window
// listener
frame.show();
}
}
class BouncePressFrame extends JFrame {
private BallPressCanvas canvas;
public BouncePressFrame() {
setSize(600, 500); // 窗口大小
setTitle("Bounce Ball");
Container contentPane = getContentPane(); // Swing的窗口不能直接放入东西,只能在其上的ContentPane上放。
canvas = new BallPressCanvas(); // 生成一个新面板。-----canvas
contentPane.add(canvas, BorderLayout.CENTER); // 窗口中心 加入该面板。
JPanel buttonPanel = new JPanel(); // 再生成一个新面板。----buttonPanel
// 调用本类方法addButton。
addButton(buttonPanel, "Start", // 生成一个按钮"Start"---加入面板buttonPanel
new ActionListener() { // |------>按钮绑上 action。
public void actionPerformed(ActionEvent evt) { // | 小球容器对象的
addBall(Thread.NORM_PRIORITY - 4, Color.black); // 处理时,执行---addBall()方法。--->产生小球(参数对象)--->加入List中--->开始画球。
}
}); // 按一次,addBall()一次--->产生一个新小球--->加入List中--->开始画此新小球。
// --->画球线程BallPressThread的run()--->小球(参数对象).move()--->每次画时,先移动,再判断,再画。
// --->BallPressCanvas类的canvas对象.paint()--->自动调BallPressCanvas类的paintComponent(Graphics
// g)方法。
// --->该方法,从List中循环取出所有小球,第i个球,--->调该小球BallPress类
// .draw()方法--->调Graphics2D方法画出小球。--使用color/
addButton(buttonPanel, "Express", new ActionListener() {
public void actionPerformed(ActionEvent evt) {
addBall(Thread.NORM_PRIORITY + 2, Color.red);
}
});
addButton(buttonPanel, "Close", new ActionListener() {
public void actionPerformed(ActionEvent evt) {
System.exit(0);
}
});
contentPane.add(buttonPanel, BorderLayout.SOUTH);
}
public void addButton(Container c, String title, ActionListener listener) {
JButton button = new JButton(title); // 生成一个按钮。
c.add(button); // 加入容器中。
button.addActionListener(listener); // 按钮绑上 action。
}
/** 主要业务方法。 */
public void addBall(int priority, Color color) {
// 生成 小球(参数对象)
BallPress b = new BallPress(canvas, color); // 生成BallPress对象,携带、初始化
// 画Ball形小球,所需参数:所在容器组件,所需color--black/red.
// 小球加入 List中。
canvas.add(b); // 面板canvas 的ArrayList中 加入BallPress对象。
BallPressThread thread = new BallPressThread(b); // 生成画小球的线程类BallPressThread对象。传入BallPress对象(携带了画球所需
// 容器、color参数)。
thread.setPriority(priority);
thread.start(); // call run(), ball start to move
// 画球线程开始。--->BallPressThread的run()--->小球(参数对象).move()--->先移动,再画。canvas.paint--->BallPressCanvas类的
}
}
// 画球的线程类。
class BallPressThread extends Thread {
private BallPress b;
public BallPressThread(BallPress aBall) {
b = aBall;
}
// 画球开始。
public void run() {
try {
for (int i = 1; i <= 1000; i++) { // 画1000次。
b.move(); // 每次画时,先移动,再判断,再画。
sleep(5); // 所以移动比Bounce.ja的球慢。
}
} catch (InterruptedException e) {
}
}
}
// swing面板类.
// 作用1) 本类面板对象.paint()方法---->自动绘制面板,且自动调paintComponent(Graphics
// g)方法,--->重写该方法,绘制面板(及其上组件)。
// 作用2) 该类对象 属性ArrayList balls---兼作小球(参数对象)的容器。
class BallPressCanvas extends JPanel {
private ArrayList balls = new ArrayList();
public void add(BallPress b) {
balls.add(b); // 向ArrayList中添加球。当按下按钮,添加多个球时,都保存在这个List中。
}
// 重写了 jax.swing.JComponent的 paintComponent()方法。
// paint()方法自动调用该方法。
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
for (int i = 0; i < balls.size(); i++) { // 循环
BallPress b = (BallPress) balls.get(i); // 从List中取出第i个球,
b.draw(g2); // 画此球。
}
}
}
/**
* 画出球。
*
* 在 canvas上画出,color色的小球图形。
*
* 属性,可用于携带画小球所需参数。
*
*
*
* @author ducongan
*
*/
class BallPress {
private Component canvas;
private Color color;
private int x = 0;
private int y = 0;
private int dx = 2;
private int dy = 2;
// 构造 初始化 容器 颜色 参数。
public BallPress(Component c, Color aColor) {
canvas = c;
color = aColor;
}
// 制定位置,画出小球。
public void draw(Graphics2D g2) {
g2.setColor(color);
g2.fill(new Ellipse2D.Double(x, y, 15, 15)); // ellipse:椭圆形
}
// 移动小球。
// 每次画时,先移动,再判断,再画。
// 该方法每次执行,画小球的起点坐标 (x,y), 每次各自+2, 即斜向右下运动。
public void move() {
x += dx; // x=x+dx; 画小球的起点坐标 (x,y), 每次各自+2, 即斜向右下运动。
y += dy; // y=y+dy;
if (x < 0) { // 小球已到左边框。保证,从左边框开始画。
x = 0;
dx = -dx; // 小球横坐标变化值取反。开始反向运动。
}
if (x + 15 >= canvas.getWidth()) { // 小球右边已经到画板右边。
x = canvas.getWidth() - 15;
dx = -dx; // 开始反向运动。
}
if (y < 0) { // 保证,从顶框开始画。
y = 0;
dy = -dy;
}
if (y + 15 >= canvas.getHeight()) { // 小球已到画板顶。
y = canvas.getHeight() - 15;
dy = -dy;
}
canvas.paint(canvas.getGraphics()); // 画出面板对象canvas----(及其上所有组件)
// //.paint()方法,自动调用
}
}
/*import ja.awt.*;
import ja.awt.event.*;
import ja.awt.geom.*;
import ja.util.*;
import jax.swing.*;
*//**
* 单线程,小球演示 搜索不到,run()方法/.start()
*//*
public class Bounce {
public static void main(String[] args) {
JFrame frame = new BounceFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // similar to
// window
// listener
frame.show();
}
}
不懂的再问啊。。。
python可以做哪些小游戏?
python小游戏2048,上班摸鱼必备(附源码)
1、Python程序开发之简单小程序实例(11)小游戏-跳动的小球项目功能用户控制挡板来阻挡跳动的小球。
2、显然,其均需具备更新角色位置和改变角色运动方向的能力,其源代码如下:Step2:设计游戏地图利用Step1中定义的游戏精灵类,我们就可以开始设计游戏地图了。
15个Python入门小程序,你都知道哪些
用程序实现石头剪刀布游戏。字典的key是姓名,value是身高,现在需要按照身高对字典重新排序。将二元二次函数封装在函数中,方便调用初学python的小伙伴注意哦~不要只依赖于教程,而忽视实操的能力。不然,是很难有进步的。
你好,python不适合做小程序的。微信官方为小程序提供了大量的接口api,开发小程序需要有基本的Jascript,HTML,CSS的基础。
python必背内容:变量。指在程序执行过程中,可变的量。定义一个变量,就会伴随有3个特征,分别是内存ID,数据类型和变量值。常量,指在程序执行过程中,不可变的量。一般都用大写字母定义常量。与程序交互。
浅浅的笑着:“我会带着你的孩子,顚节进入Python程序开发之简单小程序实例(11)小游戏-跳动的小球项目功能用户控制挡板来阻挡跳动的小球。
首先要明确一点,python是后台语言,不能直接用python来写微信小程序的。微信小程序是用jascript和css来写的。python只是用来给小程序提供后台数据用的。同样可以为小程序提供后台数据的有ja和php。
Python实现消消乐小游戏1、pre{overflow-x:auto}实现消消乐的构成主要包括三部分:游戏主体、计分器、计时器,下面来看一下具体实现。先来看一下游戏所需Python库。
2、鼠标点击切换位置。根据查询python消消乐相关资料得知,python消消乐控制横竖用鼠标点击切换位置。找出与旁边的两个图案匹配的另一个,鼠标点击切换位置,使得一行或一列至少3个相同即可消去。
3、为每一类的方块做一个对象(比如红色是一个类;蓝色是一个类……)写一个方法中,将所有方块放在一个数组中,再两个for循环遍历横纵坐标(整个游戏界面大小),将二维数组的值赋给随机一个方块类对象。
怎样用Python做一个2048?通过上下左右的不断移动叠加直到score累加到2018为止,游戏失败的条件是直至空格全部填满score2048,胜利的条件是score=2048。
可利用while循环实现,每次循环i加一,原数2048为a每次循环除以2,当a小于1时退出程序。while循环在每次执行循环体之前,都要先对test_expression循环条件求值,如果循环条件为真,则运行循环体部分。
0-debug.apkhello-0-debug.apk安装以后是这样:话说在编译的时候可能出现空间不足的情况,根据虚拟机的不同(vmware或virtualbox)自行扩容吧。最后我们来瞧瞧简易版Python开发的2048这个游戏的源代码。
首先,打开python并创建一个新的PY文件。其次,importos,因为涉及系统文件的路径,因此首先在此处导入系统模块。随后,可以双击打开HTML文件,然后就可以看到书写的网页,如下图所示。
第一阶段:Python语言基础主要学习Python最基础知识,如Python数据类型、字符串、函数、类、文件操作等。阶段课程结束后,学员需要完成Pygame实战飞机大战、2048等项目。
Python程序开发之简单小程序实例(11)小游戏-跳动的小球项目功能用户控制挡板来阻挡跳动的小球。项目分析根据项目功能自定义两个类,一个用于控制小球在窗体中的运动,一个用于接收用户按下左右键时,挡板在窗体中的运动。
安装Python:在编写Python程序之前,需要在计算机上安装Python。Python提供了下载安装程序的链接,可以根据操作系统版本下载安装程序。编写代码:可以使用任何文本编辑器编写Python代码。
首先要明确一点,python是后台语言,不能直接用python来写微信小程序的。微信小程序是用jascript和css来写的。python只是用来给小程序提供后台数据用的。同样可以为小程序提供后台数据的有ja和php。
对于学python编程的途径可以说是有两种,一种是自学,一种是到培训机构进行报名学习,python是一门编程语言,是一门可以跟计算机打交道的语言,学习python编程语言需要做的是实操而不是大量的刷题;学习时间大概是4-6个月。
使用python制作一个抽奖小游戏——骰子游戏1、汇总这个可以创建多种玩法,随机摇骰子只是其中的一种,还可以先让一个人输入一个数字并储存起来,然后再执行程序,如果数字不等于数字就不是星,当数字等于时就是星并结束程序——类似抽奖。。
2、python版的地址:DiceGame其中python版需要安装了python5才可以运行。python2的下载地址:python2朋友写了一个精美的手机版,用AdobeFlashLite完成的:BeautyDice.rar下面是游戏规则。
3、利用random函数写了个小程序。你把输入和输出与html元素连接一下应该就可以了。
VB代码注释 哪位高人帮帮我吧
Option?Explicit
'声明在变量使用之前必须先定义
Private?Const?MERGEPAINT?=?&HBB0226
Private?Const?SRCAND?=?&H8800C6
'MERGEPAINT与SRCAND在本段代码中没有使用
Private?Const?SRCCOPY?=?&HCC0020
'bitblt函数中的一个操作数
Private?Declare?Function?BitBlt?Lib?"gdi32"?(ByVal?hDestDC?As?Long,?ByVal?x?As?Long,?ByVal?y?As?Long,?ByVal?nWidth?As?Long,?ByVal?nHeight?As?Long,?ByVal?hSrcDC?As?Long,?ByVal?xSrc?As?Long,?ByVal?ySrc?As?Long,?ByVal?dwRop?As?Long)?As?Long
'此函数用于对指定的区域中的像素进行位块(bit_block)转换,以传送到目标对象区域。
'?Variables?for?positioning?the?ball.
'以下几个变量及常量的定义用于控制小球的位置、移动等参数
Private?Const?BallR?=?10'?半径
Private?Const?BallD?=?2?*?BallR?+?1?'?直径
Private?CurX?As?Single?'?圆球所在的当前x坐标
Private?CurY?As?Single?'?圆球所在的当前y坐标
Private?OldX?As?Single?'?上一次绘制圆的x坐标
Private?OldY?As?Single?'?上一次绘制圆的y坐标
Private?VelX?As?Single?'?水平位移距离
Private?VelY?As?Single?'?垂直位移距离
Private?Xmax?As?Single?'?圆心能够到达的最大X坐标
Private?Ymax?As?Single?'?圆心能够到达的最大Y坐标
'?DrawBall过程用于绘制圆球
Private?Sub?DrawBall()
'?抹去原来的小球
BitBlt?picCanvas.hDC,?_
OldX?-?BallR,?OldY?-?BallR,?BallD,?BallD,?_
picHidden.hDC,?OldX?-?BallR,?OldY?-?BallR,?SRCCOPY
OldX?=?CurX
OldY?=?CurY
'把当前圆心的X坐标、Y坐标保存在OldX、OldY中
'?重新在?curX,CurY?坐标?绘制半径为ballR的圆球
picCanvas.Circle?(CurX,?CurY),?BallR
'?刷新框
picCanvas.Refresh
End?Sub
'?初始化小球的位置等信息,并绘制小球
Private?Sub?Form_Load()
'?是窗口大小恰好适应框的大小
Width?=?(Width?-?ScaleWidth)?+?picCanvas.Width
'计算窗体应该的宽度?=框的宽度+边框的宽度
Height?=?(Height?-?ScaleHeight)?+?picCanvas.Height
'计算窗体应该的高度?=框的高度+边框的高度
Xmax?=?picCanvas.ScaleWidth?-?BallR
'新的圆边界能到达的X坐标
Ymax?=?picCanvas.ScaleHeight?-?BallR
'新的圆边界能到达的y坐标
'?初始化圆球的位置和移动方向
Randomize'随机
CurX?=?Int((Xmax?-?BallR?+?1)?*?Rnd?+?BallR)
CurY?=?Int((Ymax?-?BallR?+?1)?*?Rnd?+?BallR)
'随机产生一个在框内的圆心坐标的X、Y
OldX?=?CurX
OldY?=?CurY
'把当前圆心的X坐标、Y坐标保存在OldX、OldY中
VelX?=?Int((10?-?5?+?1)?*?Rnd?+?5)
VelY?=?Int((10?-?5?+?1)?*?Rnd?+?5)
'随机产生VelX和VelY,即每次圆心所移动的距离,也可以说是移动速度
DrawBall
'调用DrawBall过程绘制圆球
End?Sub
'?通过Timer移动圆球,从而达到动画移动效果
Private?Sub?tmrBounce_Timer()
CurX?=?CurX?+?VelX
'计算新的小球的X坐标
If?(CurX?>?Xmax)?Then
'如果新的x坐标到达框的最右侧
CurX?=?Xmax
'则将x坐标置为框的最右侧
VelX?=?-VelX
'移动的方向改为相反方向,即为向左
'Beep
'取消此处的注释则在小球到达框的最右侧时?咚?的?响一声,后面的一样,不再介绍
ElseIf?(CurX?<?BallR)?Then
'如果新的x坐标到达框的最左侧
CurX?=?BallR
'移动的方向改为相反方向,即为向右
VelX?=?-VelX
'Beep
End?If
'计算新的小球的Y坐标
CurY?=?CurY?+?VelY
'如果新的Y坐标到达框的最下侧
If?(CurY?>?Ymax)?Then
'则将Y坐标置为框的最下侧
CurY?=?Ymax
'移动的方向改为相反方向,即为向上
VelY?=?-VelY
'Beep
ElseIf?(CurY?<?BallR)?Then
'如果新的Y坐标到达框的最上侧
CurY?=?BallR
'则将Y坐标置为框的最上侧
VelY?=?-VelY
'移动的方向改为相反方向,即为向下
'Beep
End?If
'得到新的圆心后重回圆球
DrawBall
End?Sub
这段代码使用了API,还用了两个框,其实这个程序不需要这么复杂,按照这里做节省许多代码,也不用那么多控件://hi.baidu/kfqjhg/blog/item/bd5dc6034e0d67d8277fb5bd.html
关于BITBlt函数请参考:://baike.baidu/view/1080366.htm
因为按照以上代码远点太小所以更改了圆的半径,运行后结果如图: